Cum să reduceți dimensiunea APK-ului Android și să o faceți mai ușoară

În ultimele luni, am adus o serie de îmbunătățiri pentru aplicația SignEasy de la Android. Am făcut pași mari încercând să creăm o experiență mai bună pentru utilizatorii noștri și, după aproape un an de eforturi, am trecut de la un aspect așa (stânga, iunie 2015) la acest lucru (dreapta, iunie 2016)!
Aplicația renovată a fost construită în jurul principiilor de proiectare a materialelor (care este o poveste interesantă pe cont propriu). Nu numai că se simte mai repede, dar oferă și o experiență de semnare îmbunătățită. La fel ca toate lucrurile bune, totuși, această actualizare a avut un cost, cu o aplicație voluminoasă de până la aproape 35 MB. Inacceptabil! Am simțit durerea utilizatorilor noștri și am decis că este timpul să punem aplicația pe o dietă atât de necesară. Iată câteva dintre tehnicile pe care le-am folosit.
Bibliotecile din abundență
Aplicațiile tind să folosească o grămadă de biblioteci pentru a se menține în funcțiune și nu mă refer doar la acea bibliotecă terță parte pe care ați adăugat-o pentru animații. De asemenea, trebuie să includeți SDK-uri pentru compatibilitate inversă pentru oricare dintre API-urile Google sau chiar pentru a crea materialul aplicației. Fiecare dependență pe care o adăugați poate contribui semnificativ la dimensiunea APK-ului, mai ales dacă aplicația dvs. este în producție de mult timp. Un bun punct de plecare este să tăiați orice biblioteci inutile din aplicația dvs.
Bagaje inutile
Acesta este un instrument excelent pentru a vedea ce biblioteci folosește aplicația dvs., inclusiv un număr de metode pe care le are fiecare. Cu cât numărul este mai mare, cu atât contribuie în cele din urmă la APK-ul dvs. Eliminați toate bibliotecile neutilizate, în special cele voluminoase.
ProTip: dacă aplicația dvs. folosește Serviciile Google Play, asigurați-vă că nu includeți întreaga pachet în versiunea dvs. De la v6.5, puteți include selectiv bibliotecile de care aveți nevoie - nici mai mult, nici mai puțin. Este un mic truc îngrijitor care ne-a ajutat să reducem niște MB serioși.
Întotdeauna ProGuard
Asigurați-vă că aplicați ProGuard la APK. Este un instrument foarte eficient, care elimină toate clasele, metodele și câmpurile neutilizate din aplicația ambalată, inclusiv oricare din biblioteci.
Dacă utilizați AppCompat-v7 sau acceptați biblioteca-v4 în aplicația dvs. (ceea ce probabil faceți), asigurați-vă că fișierul ProGuard nu are niciuna dintre aceste linii.
Bibliotecile de asistență sunt mari singure și vă ajută dacă permiteți ProGuard să elimine toate clasele neutilizate.
ProTip: Dacă utilizați AppCompat SearchView în aplicația dvs., adăugarea celor două linii de mai sus poate duce la ruperea lucrurilor. Acest lucru se datorează faptului că oricare dintre elementele AppCompat care sunt utilizate în XML ca șir nu vor fi recunoscute de AAPT, iar clasa este eliminată de ProGuard. Pentru a evita acest lucru, adăugați această linie înapoi la configurația dvs. ProGuard.
(Acest lucru funcționează cu orice clasă care este utilizată în XML ca șir.)
Minimizare și micșorare
O tehnică simplă este de a-i spune lui Gradle să micșoreze resursele și să elimine resursele neutilizate pentru dvs. atunci când împachetați aplicația. În fișierul build.gradle, adăugați următoarele la tipul de compilare pe care doriți să îl afectați:
Gestionarea desenelor
Având în vedere gama largă de dispozitive Android de pe piață, dezvoltatorii adaugă de obicei active pentru 5 densități diferite (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), precum și active diferite dacă aveți o interfață de utilizare specifică tabletei, la fel ca noi. Toate aceste imagini ambalate într-un singur APK contribuie semnificativ la volumul mare.