- Napredno upravljanje različic izdelkov in vrst gradenj z uporabo Gradle za optimizacijo uvajanja.
- Podroben nadzor nad SDK-jem, imenskimi prostori in ID-ji aplikacij za zagotavljanje združljivosti in edinstvenosti v trgovini Google Play.
- Optimizacija delovanja integriranega razvojnega okolja (IDE) in sistema za gradnjo za okolja z omejenimi viri.
- Integracija izvornih knjižnic C++ in uporaba razreda BuildConfig za dinamična okolja.
Če se lotevate razvoja mobilnih aplikacij, ste verjetno ugotovili, da nastavitev gradnje ni le stvar pritiska na gumb za zagon. Sistem za gradnjo Android je mehanizem, ki vzame vso vašo kodo in vire ter jih pretvori v datoteko APK ali paket Android App Bundle (AAB), ki so paketi, ki na koncu dosežejo uporabnikove naprave.
Da bi vse to teklo gladko, se Android Studio zanaša na Gradle in njegov namenski vtičnik , ki nam omogoča, da prilagodimo vse od podpisa aplikacije do različic operacijskega sistema, ki jih bomo podpirali. Sprva ni enostavno, a ko enkrat obvladate organizacijo različic in odvisnosti, lahko izdate brezplačne, plačljive ali poskusne različice, ne da bi morali podvajati svoj projekt.
Srce gradnje: Gradle in njegove datoteke
Za upravljanje procesa gradnje moramo komunicirati z več besedilnimi datotekami, ki uporabljajo jezike, kot sta Kotlin DSL ali Groovy. Najprej imamo Gradle Wrapper (gradlew) , ki je fantastičen, saj zagotavlja, da celotna ekipa uporablja isto različico Gradla, s čimer se prepreči tipičen scenarij "deluje na mojem računalniku".
V korenu projekta najdemo datoteko settings.gradle.kts , kjer Gradlu povemo, kateri moduli so del aplikacije in konfiguriramo repozitorije. Nato je tu še datoteka build.gradle najvišje ravni , ki določa različice vtičnikov, ki bodo v skupni rabi med vsemi moduli. Pravi biser pa je datoteka build.gradle na ravni modulov , kjer konfiguriramo podrobnosti, specifične za aplikacijo, kot so SDK in odvisnosti.
Obvladovanje Android SDK-ja
Konfiguracija SDK-ja je ključnega pomena za preprečevanje sesutja aplikacije na starejših napravah ali njene zastarelosti. compileSdk določa , kateri Android API-ji so na voljo med pisanjem kode; idealno bi bilo, da vedno uporabljate najnovejšo različico, da izkoristite najnovejše funkcije. Po drugi strani pa je minSdk rdeča črta: nobena naprava z različico, starejšo od te, ne bo mogla namestiti aplikacije.
Ne smemo pozabiti na targetSdk , ki operacijskemu sistemu v bistvu pove, da smo aplikacijo na tej specifični različici že preizkusili. Če ima naprava novejšo različico Androida od naše ciljne naprave, bo sistem aktiviral način združljivosti , da prepreči nepravilno delovanje aplikacije.
Različice izdelkov in vrste izdelave
Tu postanejo stvari zanimive. Vrste gradenj Služijo za razlikovanje stopenj razvoja. Privzeto imamo debugki omogoča odpravljanje napak in uporablja generični ključ, in release, ki je optimizirana, zakrita in podpisana različica za javnost.
Če želite zagnati različico »Lite« in različico »Pro«, morate uporabiti Okusi izdelkovTo omogoča ponovno uporabo običajne kode, vendar spreminjanje virov ali funkcionalnosti glede na različico. Ko združimo vrsto gradnje z različico izdelka, dobimo različica kompilacije (npr. demoDebugZa upravljanje tega uporabljamo dimenzije variantki vam omogočajo združevanje različnih okusov iz aplikacije in njihovo mešanje.
Upravljanje ID-jev in imenskih prostorov
El ID aplikacije To je ID vaše aplikacije v trgovini Google Play; če ga po objavi spremenite, bo trgovina mislila, da gre za popolnoma novo aplikacijo. Uporabite ga lahko applicationIdSuffix tako da ima različica za odpravljanje napak drugačen ID in jo je mogoče namestiti obe različici na istem mobilnem telefonu brez trčenja.
Imenski prostor pa določa paket, v katerem se generirajo razredi R in BuildConfig. Čeprav je priporočljivo, da sta imenski prostor in applicationId enaka, da se izognete zapletom, ju je mogoče ločiti, če morate reorganizirati izvorno kodo, ne da bi spremenili identiteto aplikacije v trgovini.
Konfiguracija podpisa in varnosti
Izdane aplikacije ni mogoče distribuirati, če ni podpisana. Za to potrebujemo shrambo ključev in zasebni ključ. Ključnega pomena je, da gesel ne zapišemo neposredno v datoteko Gradle; najboljša praksa je, da jih naložimo iz okoljskih spremenljivk ali lokalne datoteke z lastnostmi, ki ni naložena v nadzor različic.
Optimizacija delovanja IDE
Android Studio lahko porabi veliko RAM-a. Da bi to preprečili, lahko uredite datoteko studio.vmoptions in povečate največjo velikost kopice (Xmx). Če vaš računalnik deluje z malo viri, je najbolje, da omogočite način varčevanja z energijo , onemogočite nepotrebna preverjanja lint in predvsem odpravljate napake na fizični napravi namesto z emulatorjem.
V sistemu Windows lahko protivirusna programska oprema upočasni postopek gradnje s skeniranjem vsake datoteke, ki jo ustvari Gradle. Rešitev je, da iz skeniranja v realnem času izključite mape Gradle , Android SDK in projekte, da dosežete znatno povečanje hitrosti.
Uporaba BuildConfig in izvornih knjižnic
razred BuildConfig To je bistveno orodje, ki ga Gradle ustvari samodejno. Sporoči nam, ali smo v načinu DEBUG o RELEASE prek kode, kar je idealno za skrivanje dnevnikov v produkciji ali spremenite URL strežnika med razvojnim okoljem in aktivnim okoljem.
Za tiste, ki potrebujejo surovo moč, Android Studio omogoča integracijo C++ z uporabo CMake ali ndk-buildZunanje projekte lahko povežemo in nadzorujemo, kaj. ABI-ji (binarni vmesniki)Želimo pakirati z uporabo abiFilterspreprečimo, da bi bila končna datoteka prevelika, z vključitvijo arhitektur, ki jih ne potrebujemo.
Organiziranje izvornih nizov
Gradle organizira kodo v izvorne skupineImenik src/main/ Vsebuje tisto, kar si delijo vsi, lahko pa ustvarimo mape, kot so src/debug/ o src/full/ vstaviti kodo, ki obstaja samo v tej različici. Obstaja ena hierarhija prioritet: datoteke v različici gradnje imajo prednost pred datotekami tipa gradnje, te pa pred datotekami različice izdelka in glavne kode.
S celotnim ekosistemom konfiguracijskih datotek, upravljanja pomnilnika in razvrščanja različic je mogoče preprost projekt preoblikovati v profesionalno infrastrukturo, ki se lahko prilagaja kateri koli napravi Android, s čimer se zagotovi učinkovit postopek pakiranja in varna distribucija v trgovini.




