Tänapäeval pole kellelgi kannatust oodata rakenduse laadimist. Mobiilses ökosüsteemis on reageerimisvõime määrav tegur see, kas kasutaja jääb rakendusega tööle või kustutab selle sekundite jooksul. Keerulise liidese kohene laadimine nõuab tavapärasest koodi optimeerimisest kaugemale minemist, keskendudes sellele, kuidas seade töötleb juhiseid enne, kui need ekraanile jõuavad.
Käivitusviivituste lahendamiseks on Google rakendanud BaasprofiilidSee murranguline tööriist võimaldab arendajatel märkida, millised kooditeed on olulised. Nii hoiame ära seadme vajaduse rakenduse esmakordsel käivitamisel ise "avastada", mis tagab sujuva jõudluse. esimesest käivitamisest alatesolenemata sellest, kas tegemist on puhta installi või uuendamisega.
Mis täpselt on baasprofiilid ja kuidas need toimivad?
Nende mõistmiseks peate kõigepealt teadma, et Android kasutab Android Runtime'i (ART). Traditsiooniliselt on koodi käivitatud kasutades Täpselt õigeaegse (JIT) kompileerimisemis tõlgib koodi rakenduse töötamise ajal või Aja ees (AOT)mis teeb kõik varem ära. JIT-i probleem on see, et see võib põhjustada väiksemaid tõrkeid või esialgset aeglust, kuna kood pole alguses optimeeritud.
Baasprofiilid toimivad peamise juhendina. Need on põhimõtteliselt loend klassidest ja meetoditest, mis süsteemil peaksid olema. eelkompileerimine AOT-i abil enne kui kasutaja rakenduse avab. Nii ei pea käituskeskkond koodi lennult tõlgendama, mis võib viia kiiruse paranemine kuni 30% esialgses teostuses.
Erinevalt pilveprofiilidest, mis sõltuvad tuhandetest rakendust kasutavatest ja Google Play'd andmete lisamisest (protsess, mis võtab päevi), saadetakse baasprofiilid otse Android App Bundle (AAB)See tähendab, et optimeerimine on kohe saadaval, kõrvaldades "aeglase" perioodi, mis sageli esineb värskelt uuendatud versioonidel.
Millal on selle tehnika rakendamine oluline?
Kõik rakendused ei vaja samaväärset optimeerimist, kuid on olukordi, kus need on elupäästjad. Nende kasutamine on ülioluline, et lühendada külmkäivitusaegaEriti kui teie käivituskuval on palju sõltuvusi või keeruline renderdamine. Kui märkate, et esimene käivitus on aeglane, kuid teine välkkiire, on teil kompileerimisprobleem, mille profileerimine saab lahendada.
Lisaks ei ole need mõeldud ainult alustamiseks. Need on äärmiselt kasulikud... parandab kerimise sujuvustLoendiloogika ja animatsioonide eelkompileerimise abil väldite kaadrite kadumist, muutes sisu navigeerimise uskumatult sujuvaks. Need sobivad ideaalselt ka järgmistele eesmärkidele: optimeeri korduvaid funktsioonenäiteks maksevoog või registreerimine, tagades, et kasutaja poolt enimkasutatavad marsruudid on kiireimad.
Generatsioonimooduli samm-sammult seadistamine
Kõige moodsam viis selle rakendamiseks on spetsiaalse mooduli kaudu Android Studios. Alustamiseks peate minema aadressile Uus moodul ja valige mall Baasjoone profiili generaatorSiin saate määrata sihtrakenduse ja mooduli nime (näiteks baselineprofile) ja eelistatud keel, kas Kotlin või Java.
See protsess automatiseerib testimiskeskkonna loomise. Viisard konfigureerib plugina. androidx.baselineprofile ja lisab teeki profiilipaigaldaja rakenduse moodulis. Viimane vastutab profiili õigesti installimise eest kasutajate seadmetesse, isegi vanemate Androidi versioonide puhul, mis ei toeta pilveprofiile.
Oluline tehniline detail on hägustamise haldamine. Profiili kehtivuseks tuleb see genereerida variandil, kus isMinifyEnabled väärtuseks on seatud väärLõpliku versiooni pärast pole aga vaja muretseda: R8 suudab profiilireegleid ümber kirjutada, et need vastaksid tootmis-APK hägustatud koodile, säilitades seeläbi maksimaalne turvalisus ja optimeerimine suurusest.
Kriitiliste kasutajateekondade loomine (CUJ)
Põhiprofiil, mis ainult rakendust käivitab, on kasulik, kuid selle jõudluse maksimaalseks ärakasutamiseks peame määratlema Olulised kasutajateekonnadSeda tehakse klassi sees BaselineProfileGenerator kasutades reeglit BaselineProfileRuleKvartali sees collectPeame simuleerima kasutaja tegelikke toiminguid.
Näiteks kui teie rakendusel on asünkroonne koormus, ei piisa ainult kutsumisest startActivityAndWait()Peate rakendama nutikaid ootamisfunktsioone, et süsteem registreeriks koodi, mis käivitub sisu ilmumisel. See saavutatakse liidesega suheldes järgmiste toimingute kaudu: UiAutomator, otsides konkreetseid elemente ja oodates, kuni need enne testi lõppu nähtavaks muutuvad.
Täiustatud töövoo jaoks võiksite generaatori programmeerida kerige loendeid vertikaalselt kasutades meetodit flingLiikuge detailsetele ekraanidele või hallake isegi süsteemiõiguste dialoogiaknaid. Mida täpsem on simuleeritud läbikäik, seda täpsem on genereeritud profiil ja seega ka Mida sujuvam on kogemus tegelik lõppkasutaja.
Toimivuse genereerimine ja valideerimine
Kui generaator on kirjutatud, on aeg see käivitada. Ideaalis peaksite kasutama Gradle'i hallatav seade (GMD) või pildiga emulaator aosp omama juurõigusi, kuigi teeki uuemad versioonid lubavad juba füüsilistes seadmetes profiile genereerida Android 13 või uuem ilma tüsistusteta.
Gradle'i ülesande käivitamisel :app:generateBaselineProfileSüsteem käivitab rakenduse mitu korda, kogub välja kutsutud klassid ja meetodid ning loob faili baseline-prof.txtSee fail paigutatakse automaatselt rakenduse ressursside kausta, kust see on valmis AAB-sse pakkimiseks.
Et teada saada, kas see tõesti toimib, kasutasime Jetpacki makrovõrdlusmarkLõime testi, mis võrdleb kahte stsenaariumi: üks koos CompilationMode.None() (ilma optimeerimiseta) ja teine koos CompilationMode.Partial() (profiili kasutades). Mõõdiku analüüsimisel aegTäieliku KuvaniMillisekundites on tavaline täheldada drastilist lühenemist, mis kinnitab, et kriitilist koodi ei pea enam reaalajas kompileerima.
Reaalsetes olukordades, näiteks suuremahuliste rakenduste puhul, on näidatud, et Just-in-Time (JIT) lõim on hõivatud 25%-lt ajast vaid 3%-ni. See vabastab protsessori ressursse ja vähendab seadme soojuskoormust, mille tulemuseks on Stabiilsem ja tõhusam rakenduseriti odavates terminalides.
Baasprofiilide rakendamine on üks kulutõhusamaid investeeringuid kasutajakogemuse parandamisse, kuna see võimaldab tarkvaral tunduda kerge ja reageerimisvõimelisena juba esimesest sekundist alates. Kombineerides võrdlusaluste moodulite kasutamist alglaadimisaegade genereerimiseks ja pidevaks valideerimiseks, saab iga arendaja muuta aeglase rakenduse võimsaks tööriistaks. kohene ja professionaalne mis hoiab oma kasutajaid.