Kuna meie rakendustele lisandub funktsioone ja need muutuvad keerukamaks, on Ă¼sna tavaline, et lõplik faili suurus suureneb märkimisväärselt. See on tõsine probleem, sest kui rakendus on liiga suur, mõtlevad paljud kasutajad enne installinupule klõpsamist kaks korda või, mis veelgi hullem, katkestavad allalaadimise poole peal. Lisaks võtab suur rakendus telefonis rohkem salvestusruumi ja võib lõppkokkuvõttes mõjutada sĂ¼steemi reageerimisvõimet.
Selleks, et teie projekt ei muutuks digitaalseks hiiglaseks, on mitu strateegiat, alates koodi puhastamisest kuni piltide optimeerimiseni. Selles artiklis sĂ¼veneme sellesse, kuidas kasutada selliseid tööriistu nagu R8 ja ProGuard ning rakenduste kogumite võlujõudu, et muuta teie rakendus võimalikult kergeks ja kiireks, tagades selle veatu töö isegi odavates seadmetes.
Rakenduse tegelike olude mõistmine
Enne alustamist peame teadma, kus asub suurem osa andmetest. Rakenduse suurus jaguneb tavaliselt neljaks põhiplokiks. Esiteks on Java või Kotlini baitkood ja selle teegid, mis moodustavad tavaliselt 30–40%. Seejärel on sarnase suurusega ressursid, näiteks paigutused ja animatsioonid . Meil ​​on ka erinevate arhitektuuride jaoks kompileeritud natiivsed teegid (C/C++) (15–25%) ja lõpuks varad ehk toorfailid (5–15%).
Arvamuste vältimiseks on kõige parem kasutada Android Studio APK Analyzerit (minekuks Build > Analyze APK). See tööriist võimaldab teil täpselt näha, kui palju kaaluvad DEX-klassid, ressursikaust ja natiivsed teegid, võimaldades teil võrrelda praeguseid versioone eelmistega, et täpselt kindlaks teha, millised muudatused põhjustasid faili suuruse suurenemise. Selle teema sĂ¼vendamiseks on kasulik mõista Androidi failihierarhiat ja failide korraldamist.
Koodipuhastus: hĂ¼pe ProGuardilt R8-le
Koodi vähendamine on kahtlemata kõige tõhusam viis baitide vähendamiseks. Siin tulevadki mängu ProGuard ja selle tänapäevane järeltulija R8. ProGuard oli aastaid standard, hoolitsedes kasutamata klasside, väljade ja meetodite eemaldamise , baitkoodi optimeerimise ning nimede varjamise eest, et muuta need lĂ¼hemaks (ja raskemini loetavaks kõigile, kes Ă¼ritavad teie koodi häkkida).
Tänapäeval on R8 vaikekompilaator ja teeb kõike, mida ProGuard tegi, aga palju paremini ja kiiremini. R8 rakendab agressiivsemat puude raputamist , Ă¼hendab klasse sarnaste funktsioonidega ja optimeerib loendeid, teisendades need täisarvudeks. Lisaks võimaldab see desuhkru eemaldamisel kasutada kaasaegseid Java 8 funktsioone Androidi vanemates versioonides.
Tehniline konfiguratsioon failis build.gradle
Nende optimeeringute aktiveerimiseks väljalaskeversioonis peate konfigureerima ehitusfaili, määrates minifyEnabled väärtuseks on tõene ja reeglifailide linkimine. Oluline on kasutada proguard-android-optimize.txt optimeeringute täielikuks ärakasutamiseks. Põhikonfiguratsiooni näide oleks järgmine halda rakendusklasse või need, kellel on märgitud @Keep et R8 neid kogemata ei kustutaks.
Väliste teekide reeglite haldus
Mõnikord on R8 liiga tõhus ja kustutab peegelduse kaudu kasutatud koodi, põhjustades vigu, näiteks ClassNotFoundExceptionSellepärast raamatupoodidele meeldivadki Retrofit, OkHttp või Gson nõuavad spetsiifilisi reegleid.Näiteks Gsoni puhul on oluline säilitada andmemudelites väljanimed, et JSON-i deserialiseerimine ei nurjuks. Kui pärast hägustamist ilmneb vigu, siis fail... kaardistamine.txt See on teie parim liitlane pinujälgede tõlkimisel ja tõrke asukoha väljaselgitamisel.
Nutikas ressursside optimeerimine
Ressursid on sageli need kohad, kus kõige rohkem ruumi raisatakse. Lihtne, aga võimas tehnika on aktiveerida kahanemisressursid failis build.gradle. See eemaldab failid, millel koodis puudub viide, kuigi on oluline teada, et kui kutsute ressurssi dĂ¼naamiliselt välja, kasutades getIdentifierSa pead selle failis deklareerima keep.xml et see ära ei kaoks.
Pildid ja graafika: Vähem on rohkem
PNG-vorming põhjustab palju ebavajalikke megabaite. Praegune soovitus on migreerida kõik WebP-vormingusse , mis pakub palju paremat tihendust, säilitades samal ajal kvaliteedi. Selle teisenduse saate teha otse Android Studios, paremklõpsates pildil. Ikoonide ja lihtsate kujundite jaoks on ideaalsed Vector Drawables'id ; Ă¼ks XML-fail asendab viit erineva tihedusega versiooni, lihtsustades hooldust ja vähendades faili suurust.
Keelte ja tiheduse vähendamine
Paljudel välistel teekidel on tõlked 50 keelde, mida teie rakendus tõenäoliselt ei toeta. Selle parandamiseks kasutage omadust resConfigid vaikekonfiguratsioonistäpsustades ainult neid keeli, mida te tegelikult kasutate (näiteks "es", "en"Samamoodi saate piirata kaasatud ekraanitihedust, kui teate, et teie sihtrĂ¼hm kasutab kaasaegseid seadmeid, eemaldades ressursse ldpi või mdpi mida keegi enam ei kasuta.
Täiustatud levitamisstrateegiad
Kui soovite APK-faili suurust lõplikult vähendada, peaksite lõpetama universaalsete APK-de kasutamise ja lĂ¼lituma Android App Bundle'itele (.aab) . Selle asemel, et saata Ă¼ks hiiglaslik fail kõigega, loob Google Play iga seadme jaoks optimeeritud APK. Nii saab ARM64-telefoni ja xxhdpi-ekraaniga kasutaja alla laadida ainult selle, mida tema riistvara vajab , vähendades allalaadimise suurust kuni 40%.
DĂ¼naamilised funktsioonimoodulid ja kiirrakendused
Kogu kood ei pea olema algusest peale saadaval. DĂ¼naamiliste funktsioonimoodulite abil saate rakenduse osi (näiteks täiustatud fototöötluse või võrguĂ¼henduseta režiimi) eraldada, nii et need laaditakse alla alles siis, kui kasutaja sellele funktsioonile juurde pääseb. Teisest kĂ¼ljest võimaldavad kiirrakendused inimestel teie rakendust proovida ilma seda installimata, laadides URL-i või Google Play nupu kaudu äärmiselt kerge baasmooduli.
Sõltuvuste audit ja lõplikud Ă¼ksikasjad
Mõnikord pole probleem mitte teie koodis, vaid selles, mida te väljastpoolt sisse toote. Teegid nagu Guava või Jackson võivad olla väga suured; kaaluge nende asendamist kergemate alternatiividega, näiteks kotlinx.serialization või Gson . Samuti on soovitatav kasutada Google Fontsi allalaaditavaid fonte, selle asemel et oma ressurssidesse suuri TTF-faile koondada, mis võib säästa mitu megabaiti, kui kasutate fondi mitut variatsiooni.
OptimeerimistsĂ¼kli lõpuleviimiseks pidage meeles, et Android Go on kasvav turg. Kui soovite, et teie rakendus säraks seadmetes, millel on vähem kui 1 GB muutmälu, proovige hoida selle suurus alla 40 MB. Android Linti kasutamine orvuks jäänud ressursside tuvastamiseks ja järjepideva puhastusrutiini säilitamiseks võimaldab teie rakendusel olla tõhus, kiiresti installida ja pakkuda sujuvat kasutuskogemust olenemata seadme võimsusest.