Mastering Development Tools I.
virtuálne zariadenie (emulátor), adb
, udalosti na zariadení
About
Vývoj vašej aplikácie budete veľmi často skúšať nie na reálnom zariadení, ale na emulátore Android zariadenia. Na tomto cvičení si ukážeme, ako takéto virtuálne zariadenie vytvoriť a ako s ním komunikovať.
Objectives
- Naučiť sa vytvoriť a spravovať virtuálne zariadenia.
- Naučiť sa pracovať s nástrojom adb.
- Naučiť sa vyvolávať rozličné udalosti na zariadení.
- Spoznať základné stavebné kompnenty Android aplikácií.
Postup
Virtual Device Management
Každú aplikáciu, ktorú vytvoríte, budete potrebovať aj otestovať, či sa naozaj správa tak, ako ste plánovali. Pre testovanie máte v princípe dve možnosti: buď aplikáciu nasadíte priamo na fyzické zariadenie alebo použijete softvérový emulátor, ktorý sa bude správať ako fyzické zariadenie. V tomto kroku sa pozrieme na nástroje a možnosti správy pre tvorbu virtuálnych zariadení pomocou emulátora.
Úloha
Spustite príkazový riadok a uistite sa, že máte dostupné príkazy ako adb
, avdmanager
, emulator
.
Poznámka
Ak ich dostupné nemáte a aj napriek tomu máte nainštalované Android SDK, nemáte správne nastavenú premennú PATH
vo vašom operačnom systéme.
Úloha
Pomocou príkazu avdmanager
si zobrazte zoznam dostupných zariadení (device), virtuálnych zariadení (AVD) a platforiem (target).
Poznámky pre učiteľa
Zobraziť dostupné profily zariadení je možné príkazom:
avdmanager list device
Zobraziť zoznam vytvorených Android virtuálnych zariadení je možné príkazom:
avdmanager list avd
Zobraziť zoznam dostupných platforiem je možné príkazom:
avdmanager list target
Ak príkaz avdmanager list
spustíte bez parametra, zobrazí sa všetko dokopy.
Úoha
Vytvorte nové virtuálne zariadenie, ktoré bude reprezentovať telefón Nexus 5 s nainštalovaným _OS Android 6 Marshmallow (API Level 23) a Google Services.
AVD Manager prichádza s niekoľkými predpripravenými profilmi zariadení. Máte teda možnosť vytvoriť si zariadenie podľa vlastných požiadaviek alebo si môžete vytvoriť nové zariadenie na základe niektorého z predpripravených profilov. V našom prípade nás bude zaujímať telefón Nexus 5.
Poznámky pre učiteľa
Pomocou príkazu avdmanager list device
najprv zistíme id
profilu zariadenia Nexus 5:
avdmanager list device
...
---------
id: 8 or "Nexus 5"
Name: Nexus 5
OEM : Google
---------
...
Následne pomocou príkazu avdmanager
zariadenie vytvoríme príkazom create avd
:
avdmanager create avd
Error: The parameter --name must be defined for action 'create avd'
Výsledok skončí s chybou, ktorá hovorí, že sa očakáva povinný parameter --name
. Tak ho pridáme a novovytvárané zariadenie pomenujeme:
avdmanager create avd --name nexus
Error: Package path (-k) not specified. Valid system image paths are:
system-images;android-23;google_apis;x86_64
null
Opať výsledok skončil s chybou, takže pomocou prepínača -k
doplníme informáciu o obraze systému, ktorý má byť použitý:
avdmanager create avd --name nexus -k 'system-images;android-23;google_apis;x86_64'
Auto-selecting single ABI x86_64
Do you wish to create a custom hardware profile? [no]
Zrušíme tvorbu AVD a rozšírime príkaz o špecifikáciu Nexus 5 zariadenia pomocou argumentu --device
:
avdmanager create avd --name nexus --device 8 -k 'system-images;android-23;google_apis;x86_64'
Po spustení dôjde k vytvoreniu AVD na základe profilu zariadenia Nexus 5.
Úloha
Pomocou príkazu emulator
spustite vami vytvorené virtuálne zariadenie.
Ak ste postupovali správne, zobrazí sa vám okno so štartujúcim systémom Android 6 Marshmallow vo virtuálnom zariadení Nexus 5.
Príkaz emulator
sa používa v tvare:
emulator -avd AVD_NAME
alebo zjednodušene
emulator @AVD_NAME
kde AVD_NAME
je názov vášho virtuálneho zariadenia. Ak by ste teda chceli spustiť práve vytvorené virtuálne zariadenie, v príkazovom riadku by ste napísali:
emulator -avd Nexus_5_API_23
Ak chcete zobraziť zoznam všetkých dostupných virtuálnych zariadení, napíšte:
emulator -list-avds
Samotný obraz virtuálneho zariadenia je uložený v priečinku $HOME/.android/avd
.
Úloha
Upravte nastavenia práve vytvoreného zariadenia tak, aby ste v ňom mohli používať aj kameru.
Pokiaľ máte na vašom počítači naozajstnú kameru, je možné ju namapovať na kameru virtuálneho zariadenia. Ak ju nemáte, je možné správanie kamery emulovať. Urobiť tak môžete zmenou nastavení virtuálneho zariadenia.
Správnosť nastavení overte v aplikácii Camera.
Najprv je treba zistiť, ako je kamera označená:
$ emulator -webcam-list
List of web cameras connected to the computer:
Camera 'webcam0' is connected to device '/dev/video0' on channel 0 using pixel format 'YUYV'
Následne je možné toto zariadenie ako prednú alebo zadnú kameru:
$ emulator @nexus -camera-front webcam0
Android Device Management with Android Studio
AVD je možné spravovať aj v prostredí Android Studia. V tomto kroku sa pozrieme na to, ako je možné vytvoriť AVD pomocou nástrojov, ktoré Android Studio poskytuje.
Úloha
Spustite Android Studio na svojom počítači.
Úloha
Z prostredia Android Studia spustite nástroj AVD Manager.
AVD Manager spustíte kliknutím na príslušnú ikonu v paneli nástrojov alebo z menu Tools vyberte položku AVD Manager.
Po jeho spustení sa vám zobrazí zoznam vašich virtuálnych zariadení. V prípade, že žiadne zariadenie ešte nemáte vytvorené, bude tento zoznam prázdny.
Úloha
Vytvorte nové virtuálne zariadenie, ktoré bude reprezentovať telefón Nexus 5 s nainštalovaným _OS Android 6 Marshmallow (API Level 23) a Google Services.
AVD Manager prichádza s niekoľkými predpripravenými profilmi zariadení. Máte teda možnosť vytvoriť si zariadenie podľa vlastných požiadaviek alebo si môžete vytvoriť nové zariadenie na základe niektorého z predpripravených profilov. V našom prípade nás bude zaujímať telefón Nexus 5.
Po vytvorení zariadenia sa toto zobrazí v zozname správcu virtuálnych zariadení.
Úloha
Spustite vami vytvorené virtuálne zariadenie.
Ak ste postupovali správne, zobrazí sa vám okno so štartujúcim systémom Android 6 Marshmallow vo virtuálnom zariadení Nexus 5.
Poznámka
V prípade, že používate nástroje Android SDK z príkazového riadku, môžete použiť príkaz emulator v tvare:
emulator -avd AVD_NAME
alebo zjednodušene
emulator @AVD_NAME
kde AVD_NAME
je názov vášho virtuálneho zariadenia. Ak by ste teda chceli spustiť práve vytvorené virtuálne zariadenie, v príkazovom riadku by ste napísali:
emulator -avd Nexus_5_API_23
Ak chcete zobraziť zoznam všetkých dostupných virtuálnych zariadení, napíšte:
emulator -list-avds
Samotný obraz virtuálneho zariadenia je uložený v priečinku $HOME/.android/avd
.
Úloha
Upravte nastavenia práve vytvoreného zariadenia tak, aby ste v ňom mohli používať aj kameru.
Pokiaľ máte na vašom počítači naozajstnú kameru, je možné ju namapovať na kameru virtuálneho zariadenia. Ak ju nemáte, je možné správanie kamery emulovať. Urobiť tak môžete zmenou nastavení virtuálneho zariadenia.
Správnosť nastavení overte v aplikácii Camera.
Úloha
Zoznámte sa s klávesovými skratkami pre ovládanie emulátora.
Zoznam skratiek pre ovládanie emulátora nájdete v položke Help po kliknutí na tlačidlo More na ovládacom paneli emulátora.
adb Basics
Android Debug Bridge (adb) je univerzálny nástroj príkazového riadku, ktorý umožňuje komunikovať so spustenou inštanciou emulátora alebo s pripojeným Android zariadením. V rámci tohto kroku si osvojíme základy používania tohto nástroja.
Úloha
Spustite nástroj adb
z príkazového riadku a zobrazte jeho pomocníka (help).
Nástroj spustíte zadaním nasledovného príkazu:
adb --help
Upozornenie
V prípade, že k spusteniu nedôjde, buď nemáte nainštalovaný balík android-sdk alebo sa cesta k nástroju nenachádza v systémovej premennej PATH
.
Úloha
Zobrazte zoznam práve pripojených zariadení.
Ak máte spustený emulátor alebo pripojené zariadenie cez USB kábel, zobrazí sa vám v zozname práve pripojených zariadení, ktorý môže vyzerať napr. takto:
List of devices attached
emulator-5554 device
HT0A3PL04055 device
Poznámka
Ak pripájate zariadenie cez USB kábel, musíte v ňom mať zapnutú podporu pre ladenie cez USB. Na zariadeniach s OS Android 4.2 a vyššie je predvolene vypnuté. Ak ho chcete zapnúť, choďte do menu Settings > About phone a sedemkrát kliknite na tlačidlo Build number. Po návrate na predchádzajúcu obrazovku budete na jej spodku vidieť položku Developer options.
Poznámky pre učiteľa
Riešenie úlohy
adb devices
Úloha
Pomocou nástroja adb
reštartnite zariadenie.
Poznámky pre učiteľa
adb -s emulator-5554 reboot
Úloha
Preneste obrázok loga Android Marshmallow do virtuálneho zariadenia do priečinku /sdcard/DCIM/Camera/
.
O úspešnosti operácie sa môžete následne presvedčiť v aplikácii Gallery, kde by sa mal obrázok objaviť.
Poznámka
Pre splnenie tejto úlohy vám môže pomôcť aj možnosť spustiť príkazový riadok na danom zariadení:
adb shell
Poznámky pre učiteľa
adb -s emulator-5554 push logo-marshmallow.png /sdcard/DCIM/Camera/
Poznámky pre učiteľa
Je dosť pravdepodobné, že pred zobrazením obrázku v galérii treba zariadenie reštartovať.
Úloha
Prekopírujte z virtuálneho zariadenia všetky fotky, ktoré ste vytvorili aplikáciou Camera do aktuálneho priečinku na lokálnom počítači.
Poznámky pre učiteľa
adb -s emulator-5554 pull /sdcard/DCIM/Camera .
Úloha
Pomocou príkazu screencap
spusteného vo virtuálnom zariadení vytvorte snímku obrazovku a stiahnite si ju do počítača.
Poznámky pre učiteľa
adb -s emulator-5554 shell screencap -p /sdcard/DCIM/screenshot.png
adb -s emulator-5554 pull /sdcard/DCIM/screenshot.png .
Emulator Console
Každá spustená inštancia emulátora poskytuje konzolu, pomocou ktorej je možné overiť alebo riadiť prostredie emulovaného zariadenia. Napr. je pomocou nej možné spravovať presmerovanie portu (port redirection), sieťové pripojenie a udalosti telefónu (prichádzajúci hovor, SMS správa), zatiaľ čo vaša aplikácia je spustená v emulátore. Ak chcete túto konzolu používať, musíte sa k nej pripojiť pomocou telnet-u.
Úloha
Pripojte sa na konzolu emulátora práve spusteného virtuálneho zariadenia.
Pre pripojenie sa ku konzole emulátora potrebujete poznať port, na ktorom daný emulátor počúva. Tento port je možné vidieť v názve okna príslušného terminálu alebo po spustení príkazu adb
s prehľadom aktuálne pripojených, resp. spustených zariadení:
adb devices
List of devices attached
emulator-5554 device
HT0A3PL04055 device
emulator-5556 device
Porty sa v tomto prípade nachádzajú za znakom ‘-’ za slovom ‘emulator’.
Ak sa teda chcem pripojiť na konzolu k emulátoru označenému ako emulator-5554, napíšem príkaz:
telnet localhost 5554
Po spustení konzoly si môžete zobraziť zoznam všetkých dostupných príkazov pomocou príkazu help
. Pre zobrazenie pomocníka pre konkrétny príkaz, napíšte help príkaz
.
Spojenie môžete ukončiť príkazom quit
.
Upozornenie
Ak pre pripojenie ku konzole emulátora používate v operačnom systéme OS Windows aplikáciu Putty, odhlási vás po stlačení klávesy Enter. Aby ste sa tomuto problému vyhli, v nastaveniach telnet-ového pripojenia si zmeňte aktívny (active) režim na pasívny (passive).
Úloha
Autentifikujte svoje sedenie v konzole pomocou autentifikačného tokenu.
Zoznam dostupných príkazov je pomerne krátky. Okrem toho sa vám po samotnom spustení zobrazí výzva pre autentifikovanie vašej aktuálnej relácie:
$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/path/to/.emulator_console_auth_token'
OK
Autentifikovať reláciu môžete pomocou príkazu auth
. Po úspešnej autentifikácii budete mať k dispozícii výrazne viac príkazov pre prácu.
Poznámky pre učiteľa
Najprv treba zistiť token napr. pomocou príkazu:
cat /path/to/.emulator_console_auth_token
HpO2HLhZzh8rf4k1
Následne je potrebné tento token zadať pomocou príkazu auth priamo po prihlásení sa do konzoly:
$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/path/to/.emulator_console_auth_token'
OK
auth HpO2HLhZzh8rf4k1
Android Console: type 'help' for a list of commands
OK
Úloha
Pošlite si SMS správu z čísla 112 s textom “We need your help.”.
Ak ste postupovali správne, prijatú SMS správu nájdete v zozname správ a o prijatí správy vás bude informovať aj notifikačná správa.
Poznámky pre učiteľa
sms send 112 We need your help!
Úloha
Vytvorte prichádzajúci hovor z čísla 112.
Ak ste postupovali správne, emulátor začne “zvoniť”.
Poznámky pre učiteľa
gsm call 112
Úloha
Odstráňte vytvorené AVD.
Poznámky pre učiteľa
avdmanager delete avd -n nexus
Additional Tasks
Zoznámte sa s možnosťami ovládania stavu batérie emulátora - či už z prostredia Extended controls alebo z prostredia konzoly emulátora.
Zoznámte sa s možnosťami ovládania stavu a sily sieťového pripojenia - či už z prostredia Extended controls alebo z prostredia konzoly emulátora.
Additional Links
Tools Help - prehľad nástrojov dostupných v balíku Android SDK
Genymotion - alternatívny emulátor pre emulovanie Android zariadení
Command Line Tools: avdmanager - The
avdmanager
is a command line tool that allows you to create and manage Android Virtual Devices (AVDs) from the command line.Command Line Tools: sdkmanager - The
sdkmanager
is a command line tool that allows you to view, install, update, and uninstall packages for the Android SDK.Start the emulator from the command line - dokument opisuje možnosti príkazového riadku a zoznam klávesových skratiek pre emulátor