IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

7. diel - Android programovanie - Dokončenie implementácie kalkulačky

V dnešnom tutoriále si ukážeme ladenie Android aplikácie a vygenerujeme inštalačný súbor .apk kalkulačky.

Testovanie a ladenie aplikácie

Android Studio ponúka niekoľko nástrojov, ktoré nám pomôžu pri ladení aplikácie. Pomôže nám aj pri hľadaní chýb, ktoré by mohli spôsobovať pády aplikácie. Poďme sa s nimi veľmi stručne zoznámiť! Najprv si popísané pomocníkov vymenujeme:

  • Android Profiler
  • Debugger a boj s errormi
  • Nástroj Logcat
Android Profiler

Nástroj Android Profiler je dostupný od verzie Android Studia 3.0. Tento nástroj poskytuje dáta v reálnom čase. Vďaka nim môžeme zistiť, ako naša aplikácia využíva prostriedky ako procesor, pamäť, pripojenie k internetu a batériu. Android Profiler nájdeme v menu pod položkou View -> Tool Windows -> Profiler. Otvorí sa nám okno (viď. nasledujúci obrázok). Aby sme videli nejaké dáta, musíme spustiť aplikáciu na nejakom zariadení. Po spustení projektu SimpleCalc, na nami vytvorenom virtuálnom zariadení, v Profileri uvidíme niečo podobné tomu čo je na nasledujúcom obrázku:

Tvorba mobilných aplikácií pre Android v Kotlin

Pokiaľ, po spustení aplikácie, nevidíte žiadne dáta, kliknite na tlačidlo + v ľavom hornom rohu v okne Profilera, vpravo od nápisu SESSIONS. V rozbalenej ponuke zvoľte aktuálny projekt.

Využitie batérie je možné sledovať iba pri aplikáciách bežiacich na zariadení s Androidom 8.0 (API 26) a vyššie.

Debugging

Ladenie je jednou zo základných súčastí každodenného života vývojárov. Vždy sa snažíme písať bezchybný kód a bezchybné aplikácie. Ladenie nám umožňuje prechádzať jednotlivé riadky kódu, sledovať obsah premenných aplikácie atď. Najlepšie bude ukázať si to na príklade. V projekte kalkulačky si v debuggeri zobrazíme obsah niektorých premenných. Určíme miesta v kóde, v ktorých budeme chcieť "dať pauzu". Tieto body sa volajú breakpointy a vytvoríme ich kliknutím vľavo vedľa riadku, ktorý nás zaujíma - viď obrázok:

Tvorba mobilných aplikácií pre Android v Kotlin

Po kliknutí na popísané miesto ľavým tlačidlom myši sa na ňom zobrazí červené koliesko. Ďalším kliknutím na koliesko tento breakpoint zrušíme. Zoznam všetkých breakpointov zobrazíme kliknutím na záložku Favorites na ľavej strane okna, kde v otvorenom okne rozbalíme ponuku Breakponits. Pri každom vidíme názov súboru a číslo riadku, na ktorom sa daný breakpoint nachádza. Dvojklikom na akýkoľvek breakpoint v tomto zozname sa presunieme do miesta v kóde, kde tento breakpoint je:

Tvorba mobilných aplikácií pre Android v Kotlin

Ako je vidieť na predchádzajúcom obrázku, máme v kóde celkom dva breakpointy.

Teraz spustíme aplikáciu v zariadení (skutočné alebo virtuálne) tlačidlom so zeleným chrobákom - viď obrázok:

Tvorba mobilných aplikácií pre Android v Kotlin

Vo chvíli, keď je vykonávaný príkaz, ktorý je označený breakpointom, je aplikácia pozastavená a otvorí sa okno debuggeru, v ktorom nájdeme niektoré naše premenné, vrátane hodnôt, ktoré v tej chvíli obsahujú. Ukážme si ďalší obrázok, na ňom je šípkou označená aj zelená ikona, vďaka ktorej môžeme pokračovanie v behu aplikácie. Teda pokiaľ sa neobjaví ďalší breakpoint, na ktorom sa aplikácia znovu zastaví:

Tvorba mobilných aplikácií pre Android v Kotlin

Zobrazenie errorov pri páde aplikácie

Nie sme dokonalí a aj napriek všetkej snahe sa nájde chvíľa nepozornosti av kóde urobíme chybu, ktorá sa prejaví až za behu aplikácie. Pád aplikácie a reakciu Android Studia na nej si opäť ukážeme na príklade. A to tak, že v projekte kalkulačky zámerne vytvoríme podmienky na pád. V súbore MainActivity.kt zakomentujeme tento riadok kódu v metóde onCreate():

spinnerOperation = findViewById(R.id.spinnerOperation)

Ide o premennú, uchovávajúcu referenciu na Spinner v XML, ktorým užívateľ vyberá matematickú operáciu. Zakomentovaním zabránime inicializácii premennej spinnerOperation.

Chyba nastane už pri štarte aplikácie, pretože sa na konci metódy onCreate() pokúsime komponentu Spinner nastaviť adaptér. Premenná spinnerOperation nie je inicilizovaná a aplikácia spadne s chybou UninitializedPropertyAccessException.

Otvoríme si v menu okno Logcat takto: View -> Tool Windows -> Logcat a spustíme aplikáciu. V tomto prípade nemusíme aplikáciu spúšťať v debug móde, stačí aplikáciu iba spustiť tlačidlom so zelenou šípkou:

Tvorba mobilných aplikácií pre Android v Kotlin

Čoskoro po spustení dôjde k pádu aplikácie av okne Logcatu sa objaví hromada červeného text s dôvodom pádu. V tomto texte nájdeme modrý podčiarknutý text (vyzerá ako odkaz). Keď naň klikneme, presunieme sa v kóde na ten riadok, v ktorom k chybe došlo. Pokiaľ je v Logcate takto označených miest viac, máme tak aj odkazy na časti kódu, ktorých vykonávaniu pádu bezprostredne predchádzalo.

Tvorba mobilných aplikácií pre Android v Kotlin

Nástroj Logcat

Tento nástroj sme už načali v predchádzajúcom odseku o boji s errormi a ešte ho stretneme v lekcii o životnom cykle Activity, kedy si v Logcate necháme vypisovať volanie metód životného cyklu hlavnej aktivity aplikácie Hello World! V okne Logcat sa zobrazujú rôzne systémové správy a správy, ktoré do kódu pridáme sami. Správy sú zobrazované v reálnom čase jedna za druhou a je možné v nich listovať spätne a prezerať staršie správy. Môžeme vytvoriť rôzne filtre na zobrazovanie vybraných správ alebo zobrazovať iba vlastné správy generované kódom aplikácie. A samozrejme, ako už vieme, zobrazuje aj errory spôsobujúce prípadný pád aplikácie za behu. Pre zobrazovanie správ v Logcate je nutná inštalácia konkrétnej aplikácie do zariadenia (pripojeného k počítaču káblom alebo vytvoreného virtuálneho zariadenia). Zopakujem, že Logcat otvoríme v menu View -> Tool Windows -> Logcat alebo kliknutím na záložku v dolnej časti Android Studia. Pomocou triedy Log môžeme v kóde vytvárať správy, ktoré budú zobrazené v Logcate, tu zoradené od najvyššej k najnižšej priorite:

  • Log.e(tag: String, message: String) (error)
  • Log.w(tag: String, message: String) (warning)
  • Log.i(tag: String, message: String) (information)
  • Log.d(tag: String, message: String) (debug)
  • Log.v(tag: String, message: String) (verbose)
Príklad vytvorenia správy v kóde:
Log.d("muj_tag", "Some message from the application code")

Pri vytváraní správy je dobrým zvykom ako tag nepoužívať priamo textový reťazec, ale vopred deklarovanú konštantu typu String takto:

var MUJ_TAG = "muj_tag"
Log.d(MUJ_TAG, "Some message from the application code")

Opäť si popísané vyskúšame v projekte kalkulačky. Jednu správu vložíme do metódy onCreate():

Log.d(MUJ_TAG, "onCreate()")

Druhú správu pridáme do metódy calculate():

Log.d(MUJ_TAG, "Výpočet: $number1 ${spinnerOperation.selectedItem} $number2 = $result" )

Vďaka týmto správam môžeme v okne Logcatu sledovať volanie metódy onCreate() a tiež každý výpočet.

Otvoríme Logcat a do poľa pre filtrovanie správ vložíme tag:muj_tag pre zobrazenie iba našich správ, označených týmto tagom a level:debug pre zobrazenie iba do úrovne debug:

Tvorba mobilných aplikácií pre Android v Kotlin

Filtrovanie správ je veľmi užitočné. Systémových správ je totiž Logcatom vypisovaných pomerne veľa a hľadanie vlastných správ by bolo komplikované.

Aplikácia je hotová, ukázali sme si, akým spôsobom ju ladiť a zbavovať chýb, poďme si teda vygenerovať inštalačný súbor .apk, vďaka ktorému môžeme zaistiť jej distribúciu ;-)

Vygenerovanie inštalačného súboru aplikácie

Dajme tomu, že potrebujeme vytvorenú aplikáciu publikovať (nemám teraz na mysli priamo Google Play), niekomu odoslať na otestovanie alebo sa s ňou len budeme chcieť pochváliť. Na to musíme vytvoriť inštalačný súbor. V niekoľkých nasledujúcich krokoch si prejdeme postup, ako na to:

1. V menu kliknite na Build av rozbalenej ponuke zvoľte Generate Signed Bundle/APK:

Tvorba mobilných aplikácií pre Android v Kotlin

1. V okne Generate Signed Bundle or APK zaškrtnite druhú možnosť (APK) a potvrďte tlačidlom Next:

Tvorba mobilných aplikácií pre Android v Kotlin

1. V ďalšom okne budete vyzvaní na zadanie cesty a hesla k úložisku kľúčov a na zadanie názvu konkrétneho kľúča tejto aplikácie a jeho hesla. To preto, že každý inštalačný balíček musí byť podpísaný. My zatiaľ žiadne úložisko kľúčov ani žiadny kľúč vytvorený nemáme, preto klikneme na tlačítko Create New:

Tvorba mobilných aplikácií pre Android v Kotlin

1. V okne Choose keystore file, v hornej časti, zvolíme cestu k miestu, kde budeme mať úložisko kľúčov, v dolnej časti okna toto úložisko pomenujeme a potvrdíme tlačidlom OK. Takto, na zvolenom mieste, v počítači, vytvoríme súbor .jks, kam môžeme ukladať naše budúce kľúče:

Tvorba mobilných aplikácií pre Android v Kotlin

1. Otvorí sa nám okno New Key Store. V hornej časti vidíme cestu k práve vytvorenému úložisku kľúčov. Pod cestou k úložisku zvolíme nejaké jeho heslo a na potvrdenie zopakujeme do vedľajšieho poľa. V ďalšej časti okna už budeme vytvárať nový kľúč k našej aplikácii s kalkulačkou. Na obrázku je vidieť príklad, ako všetky polia vyplniť. Opäť potvrdíme tlačidlom OK:

Tvorba mobilných aplikácií pre Android v Kotlin

1. Nachádzame sa späť v okne Generate Signed Bundle or APK z bodu 3), ale s už vyplnenými údajmi o použitom kľúči. Pri ďalšom generovaní súboru .apk teda použijeme vytvorený kľúč z úložiska kľúčov a body 4) a 5) budú vynechané, pretože stlačením tlačidla Choose existing... nájdeme umiestnenie úložiska kľúčov, zadáme jeho heslo, ďalej zadáme meno konkrétneho kľúča (Key alias), jeho heslo a potvrdíme tlačidlom Next:

Tvorba mobilných aplikácií pre Android v Kotlin

1. V ďalšom okne označíme položku release a dole zaškrtneme obe políčka (voľbu V1 i V2). Potvrdíme tlačidlom Finish, čím spustíme build projektu:

Tvorba mobilných aplikácií pre Android v Kotlin

1. Po dokončení buildu sa v pravej dolnej časti okna objaví oznámenie o dokončení akcie ao umiestnení vygenerovaného súboru .apk. Kliknutím na modrej locate bude súbor zobrazený v priečinku:

Tvorba mobilných aplikácií pre Android v Kotlin

1. Ak by ste si počas buildu odskočili a toto oznámenie prepásli, kliknite na zelenú bublinku v pravej dolnej časti okna, ktorá informuje o nových udalostiach. Mala by byť zelená. Pokiaľ je červená, znamená to, že sa niečo nepodarilo. Kliknutím na bublinku zobrazíme okno, v ktorom nájdeme to, čo potrebujeme:

Tvorba mobilných aplikácií pre Android v Kotlin

Týmto máme hotovú prvú aplikáciu aj s vygenerovaným inštalačným .apk súborom;-)

Kompletný Kotlin kód vrátane jednotlivých XML súborov máte v prílohe.

V budúcej lekcii, Android programovanie - Životný cyklus aktivity , si vysvetlíme, čo je to aktivita a popíšeme si jej životný cyklus v Android aplikáciách.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 45x (15.96 MB)
Aplikácia je vrátane zdrojových kódov v jazyku Kotlin

 

Predchádzajúci článok
Aplikácie zápisník v Kotlin - Obsluha RecyclerView
Všetky články v sekcii
Tvorba mobilných aplikácií pre Android v Kotlin
Preskočiť článok
(neodporúčame)
Android programovanie - Životný cyklus aktivity
Článok pre vás napísal Marek Urbańczyk
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programování v Kotlinu, Javě. Má také zkušenosti s C#.
Aktivity