Puneți APK-urile pe o dietă
În articolul precedent am vorbit despre cum să reducem dimensiunea unei aplicații Android prin eliminarea resurselor neutilizate. În blogul lui Cyril Mottier am găsit un articol foarte interesant, cu câteva sfaturi pentru a reduce dimensiunea APK-ului și a optimiza codul în producție. Apoi trecem la traducerea părților importante.
12 m. (2413 cuvinte.)

Alexander Mayor
Data Scientist și Computer Scientist. Creatorul acestui blog.
În articolul precedent am vorbit despre cum să reducem dimensiunea unei aplicații Android prin eliminarea resurselor neutilizate. Pe blogul Cyril Mottier Am găsit un articol foarte interesant, cu câteva sfaturi pentru a reduce dimensiunea APK-ului și a optimiza codul în producție. Apoi trecem la traducerea părților importante:
Nu este un secret faptul că aplicațiile ocupă din ce în ce mai mult spațiu. Primele aplicații obișnuiau să ocupe câteva 2 MB în versiunile inițiale de Android. Acum este destul de obișnuit să vedeți aplicații care cântăresc între 10 și 20 MB. Această creștere a dimensiunii este o consecință directă atât a așteptărilor utilizatorilor, cât și a dobândirii de experiență a dezvoltatorilor. Principalele motive pentru creșterea dimensiunii APK-uri sunteți:
- Mai multe categorii dpi ([l | m | tv | h | x | xx | xxx] dpi).
- Evoluția platformei Android, a instrumentelor de dezvoltare și a ecosistemului bibliotecii.
- Așteptări incesante ale utilizatorilor pentru interfețe grafice (UI) de calitate superioară.
- etc etc.
Publică aplicații ușoare în Magazin Play este o practică bună la care fiecare bun programator ar trebui să acorde atenție atunci când proiectează o aplicație. De ce?.
- În primul rând, deoarece este sinonim cu o bază de cod simplă, care poate fi întreținută și rezistentă la viitor.
- În al doilea rând, deoarece programatorii vor prefera, în general, să rămână sub limita actuală a Magazinului Play, 50 MB per APK dacă nu doriți să utilizați descărcări suplimentare.
- În cele din urmă, pentru că trăim într-o lume a restricțiilor:
- Lățime de bandă limitată.
- Spațiu limitat pe disc.
- etc.
Cu cât dimensiunea APK-ului este mai mică, cu atât este mai mare viteza de descărcare, cu atât mai puțină frustrare a utilizatorului și, cel mai important, evaluări mai bune.
În multe cazuri (dacă nu toate), creșterea dimensiunii este obligatorie pentru a satisface cerințele și așteptările utilizatorilor. cu toate acestea, Chiril este convins că greutatea unui APK crește, în general, mai repede decât așteptările utilizatorilor. De fapt, majoritatea aplicațiilor din Magazin Play ocupă de două ori sau mai mult decât ar trebui. Unele tehnici/reguli care pot fi utilizate pentru a reduce dimensiunea finală a aplicației vor fi discutate mai jos.
Înainte de a face orice optimizare, este important să înțelegeți formatul APK. În linii mari, a APK este un fișier arhivat compus din mai multe fișiere sub formă comprimată. În calitate de programator, îi puteți vizualiza cu ușurință conținutul dezarhivându-l cu comanda de dezarhivare .
Aceasta este ceea ce APK după executarea dezarhivării:
Majoritatea conținutului de mai sus ar trebui să fie familiar pentru fiecare programator. Acesta reflectă structura proiectului care poate fi observată în timpul dezvoltării./assets,/lib,/res, AndroidManifest.xml. classes.dex conține versiunea compilată (dex) a codului Java și resources.arsc resursele precompilate, de exemplu XML binar (valori, XML desenabile etc.).
Pentru că APK este un fișier simplu arhivat, înseamnă că are două dimensiuni, dimensiunea comprimată și cea decomprimată. Ambele sunt importante, dar în acest articol ne vom concentra asupra dimensiunii comprimate. Cu cât APK-ul este mai mic, cu atât este mai mică versiunea dezarhivată.
Acest lucru se poate face cu o varietate de tehnici. Deoarece fiecare aplicație este diferită, nu există o regulă absolută care să facă un „mai subțire” APK. Însă APK Este alcătuit din 3 componente asupra cărora putem acționa:
- Cod sursă Java.
- Resurse/active
- Cod nativ
Sfaturile de mai jos sunt pentru a minimiza cantitatea de spațiu utilizat de fiecare dintre aceste componente. Minimizând astfel dimensiunea APK-ului.
Aveți un cod cu o igienă bună
Este probabil foarte evident, dar obiceiul de a avea un cod curat este primul pas în reducerea dimensiunii aplicației finale. „Cunoaște-ți codul ca pe dos.” Scăpați de toate bibliotecile de dependență neutilizate. Îmbunătățiți codul zi de zi. Curățați-l continuu. Concentrarea pe menținerea unei baze de cod curate și actualizate este de obicei cel mai bun mod de a produce APK-uri mai mici conținând doar ceea ce este strict necesar pentru aplicație.
Realizarea acestui lucru este, în general, mai ușoară atunci când începeți un proiect de la zero. Este mai dificil împotriva proiectului mai vechi. De fapt, proiectele cu un fundal istoric mare tind să se ocupe de bucăți de cod moarte și/sau practic inutile. Din fericire, există câteva instrumente care ne ajută să spălăm rufele ...
Rulați Proguard
Proguard este un instrument extrem de util care ofensează, optimizează și micșorează codul în timpul compilării. Una dintre caracteristicile sale principale de reducere a dimensiunii este arborele. Proguard practic trece prin toate directoarele cu cod pentru a detecta bucăți care nu sunt utilizate. Orice veți găsi (adică cele neutilizate) sunt eliminate din APK final. Proguard redenumiți de asemenea câmpuri, clase și interfețe pentru a face codul cât mai ușor posibil.
După cum probabil ați ghicit Proguard este extrem de util și eficient. Dar cu o mare putere vine o mare responsabilitate. Mulți dezvoltatori iau în considerare Proguard un instrument foarte enervant deoarece, în mod implicit, rupe aplicațiile care se bazează foarte mult pe reflecție. Depinde de dezvoltatori să configureze Proguard pentru a specifica în ce clase, câmpuri etc. puteți efectua optimizări.
Folosiți extensiv Lint
Proguard funcționează pe partea Java. Din păcate, nu funcționează din partea resurselor. În consecință, dacă nu este utilizată o imagine my_image în res/drawable, Proguard eliminați doar referința dvs. din clasa R, dar nu și imaginea.