20. Mar 2023
AndroidNáš Android tech stack pre vývoj mobilných aplikácií
V tomto článku sa pozrieme na niektoré z technológií, ktoré v Goodrequest používame na dennej báze, aby bol náš vývoj pre Android efektívnejší a aspoň trochu príjemnejší.
Technologický zásobník Androidu sa neustále vyvíja. Od programovacích jazykov, ako je Kotlin, až po knižnice, ako je Jetpack Compose, existuje množstvo nástrojov a technológií, ktoré vývojári používajú na vytváranie kvalitných aplikácií.
Pokiaľ ide o začlenenie nových technológií do nášho vývojového procesu, v Goodrequest používame veľmi selektívny prístup. Chápeme, že nové technológie môžu byť vzrušujúce, ale prinášajú aj svoje vlastné výzvy. Radšej zostávame pri technológiách, o ktorých vieme, že prácu splnia. Tento prístup sa nám v minulosti dobre osvedčil a veríme, že tomu tak bude aj v budúcnosti.
Programovací jazyk - Kotlin
Kotlin je výkonný programovací jazyk, ktorý je plne kompatibilný s Java a je oficiálne podporovaný spoločnosťou Google pre vývoj Androidu. Milujeme ho najmä pre jeho vylepšenú syntax, stručnosť, built-in null safety, extension funkcie a data classes. Tieto vlastnosti z neho robia skvelú voľbu pre vývojárov, ktorí chcú zlepšiť čitateľnosť a udržiavateľnosť kódu.
Kotlin vytvoril tím vývojárov v JetBrains, spoločnosti známej vytváraním vývojových nástrojov, ako je IntelliJ IDEA. Krátko po prvom vydaní sme rozpoznali jeho kvalitu a začali sme ho používať. Teraz sme organizátormi jedinej Kotlin User Group na Slovensku, kde sa vývojári stretávajú, aby sa podelili o svoje programátorské skúsenosti týkajúce sa Kotlinu a jeho ekosystému.
Http klient – OkHttp
Takmer v každej aplikácii pre Android je potrebné odosielať alebo prijímať HTTP požiadavku medzi mobilnou appkou a backendom. Jednou z najpopulárnejších knižníc medzi vývojármi, ktorá spĺňa túto potrebu, je Retrofit. Retrofit je vysokoúrovňová abstrakcia postavená na OkHttp, čo znamená, že by sa mala ľahšie používať. My sme pozorovali presný opak. Najmä kvôli nedostatočnej flexibilite (mapovanie medzi request a response) a použitiu anotácií na generovanie kódu sme sa rozhodli ísť o vrstvu nižšie a použiť OkHttp s našimi vlastnými rozšíreniami JSON parsing systémom, ktorý tieto nedostatky rieši. OkHttp má mnoho ďalších užitočných funkcií (dekompresia gzip, ukladanie do vyrovnávacej pamäte...) skrytých pod kapotou, takže vývojár sa nemusí o všetko starať ručne, ak nechce. Táto knižnica je dlhodobo podporovaná a rokmi overená kvalita, preto bola číslo jedna v našom výbere.
UI Framework – Compose
Dôležitým faktorom úspechu mobilnej aplikácie je používateľské rozhranie, ktoré úzko súvisí s užívateľským zážitkom. V súčasnosti aktívne používame Jetpack Compose na programovanie používateľského rozhrania. Compose je moderný UI toolkit, ktorý nám umožňuje vytvárať aplikácie pre Android pomocou reaktívneho programovania. Je to skvelá voľba pre vývojárov, ktorí chcú pre svoje aplikácie vytvárať moderné a pútavé používateľské rozhrania. Compose sme začali používať v jednej z jeho raných alfa verzií, kde sme si uvedomili, ako môže zlepšiť naše codebase a urýchliť vývoj.
Jedným z hlavných dôvodov nášho efektívnejšieho vývoja pomocou Compose je prechod na model jednej aktivity s viacerými composables . Logickým prvým krokom pri prechode z multi-activity modelu bolo použitie ponúkaného riešenia – Jetpack Compose Navigation, ktorú vytvoril Google. Pri používaní tohto riešenia sme si uvedomili, že nám neposkytuje to, čo sme očakávali od modernej navigačnej knižnice (napr. plnú kontrolu nad backstackom, odovzdávanie zložitejších dátových typov, jednoduchý deep-linking...). Približne v rovnakom čase sme si všimli, že splnenie týchto očakávaní nemusí byť zložité, preto sme vytvorili vlastný navigačný systém. V určitých ohľadoch je podobný JCN, ale spĺňa všetky naše požiadavky oveľa jednoduchším spôsobom a v porovnaní s riešením od Google je napísaný na zlomok riadkov kódu.
Nástroje - Firebase
Firebase je balík mnohých užitočných funkcií, ale využívame len niekoľko z nich, väčšinou Firebase Crashlytics a Firebase Cloud Messaging.
Firebase Crashlytics automaticky monitoruje, hlási a poskytuje podrobné informácie o zlyhaní, vrátane stack trace a stave aplikácie v čase zlyhania. To nám môže pomôcť rýchlo identifikovať a opraviť problémy v našich aplikáciách. Bez nej by sme boli úplne slepí, pokiaľ ide o analýzu chýb. Preto do každého projektu od začiatku vždy začleňujeme Firebase Crashlytics, čím zaisťujeme, že máme potrebné poznatky na zlepšenie výkonu a stability aplikácií.
Push notifikácie umožňujú aplikáciám odosielať upozornenia, správy a ďalšie informácie používateľom, aj keď je aplikácia nebeží aktívne s cieľom zvýšiť angažovanosť alebo v prípadoch použitia, keď je potrebná časovo citlivá komunikácia s klientom. Na dosiahnutie efektívnych upozornení push v našich aplikáciách pre Android sa spoliehame na Firebase Cloud Messaging.
Deployment – Bitrise
Bitrise je cloudová platforma continuous integration a continuous delivery (CI/CD), ktorá pomáha vývojárom automatizovať vytváranie, testovanie a nasadzovanie ich mobilných a webových aplikácií. Vďaka svojmu užívateľsky prívetivému rozhraniu a výkonným funkciám Bitrise zefektívňuje proces vývoja softvéru a pomáha nám rýchlejšie dodávať produkty. Okrem toho poskytuje širokú škálu integrácií s inými nástrojmi, ako sú Bitbucket, GitLab a Slack, čo uľahčuje integráciu do existujúceho workspacu.
V spoločnosti GoodRequest sme hrdí na našu schopnosť zvládnuť širokú škálu projektov. Každý projekt je jedinečný a často si vyžaduje odlišný prístup k vývoju, preto máme skúsenosti aj s technológiami Android Jetpack, a to aj napriek tomu, že ich nepoužívame každý deň. Či už pracujeme na jednoduchej aplikácii alebo komplexnom podnikovom riešení, máme skúsenosti a odborné znalosti na to, aby sme prostredníctvom výberu správneho technologického balíka dodali produkt najvyššej kvality.