Als je een hardcore Android-fan bent, is de kans grootsterk dat je gretig nieuwe thema's, aangepaste ROM's en al dergelijke mods voor je apparaat wilt uitproberen. Een van de belangrijkste verwarringpunten is de terminologie die bij deze mods hoort - iets wat de ontwikkelaars redelijk vertrouwd is, maar niet te veel voor de beginnende gebruiker. Twee van de meest voorkomende woorden in aangepaste ROM's en thema's zijn ‘deodexed’ en ‘zipalign’. Een paar dagen geleden hebben we ‘deodexed’ gedetailleerd behandeld. In dit artikel zullen we onderzoeken wat zipalign betekent en hoe APK's kunnen worden uitgelijnd.

WAT IS ZIPALIGN?
zipalign is een tool voor archiefuitlijningeerste keer met 1.6 Android SDK (softwareontwikkelingskit). Het optimaliseert de manier waarop een Android-applicatiepakket (APK) wordt verpakt. Hierdoor kan het Android-besturingssysteem efficiënter met de applicatie communiceren, en heeft daarom het potentieel om de applicatie en het hele systeem veel sneller te maken. De uitvoeringstijd wordt geminimaliseerd voor zip-uitgelijnde applicaties, wat resulteert in minder RAM-geheugen bij het uitvoeren van de APK.
ZO HOE WERKT HET PRECIES?
In een Android-besturingsomgeving, gegevensbestandenopgeslagen in elk toepassingspakket worden benaderd door meerdere processen. Het installatieprogramma zal bijvoorbeeld het gegevensmanifest lezen om de bijbehorende machtigingen te bepalen; de systeemserver kan deze bronnen om verschillende redenen lezen, zoals het weergeven van meldingen; de Home-applicatie leest bijvoorbeeld bronnen om de naam en het pictogram van de applicatie te krijgen. Aangezien Android is gebaseerd op een echte multi-tasking operationele infrastructuur, worden deze bestanden continu en herhaaldelijk benaderd. Ten slotte, maar daarom niet minder belangrijk, leest de toepassing zelf de manifestgegevens.
Aangezien Android Linux-gebaseerd is, speelt geheugenmapping eensleutelrol in efficiënte verwerking van processen. In essentie is de optimale afstemming voor de resource-handlingcode van het Android-besturingssysteem 4 bytes grenzen. Wat dit betekent is dat, als APK's worden toegewezen aan 4-byte-grenzen en dienovereenkomstig worden uitgelijnd, het besturingssysteem niet het hele toepassingspakket hoeft door te lezen om het gewenste gegevensmanifest te krijgen. Elk systeemproces weet van tevoren waar het naar de gewenste middelen moet zoeken en zal daarom veel soepeler en sneller worden uitgevoerd.
Kortom, een APK opnieuw uitlijnen resulteert in allesniet-gecomprimeerde gegevens binnen het pakket worden uitgelijnd op 4-byte grenzen, waardoor alle delen direct toegankelijk zijn via de geheugenkaart. Het RAM-verbruik is tijdens de uitvoering verlaagd omdat de querycode niet het hele toepassingspakket hoeft te lezen.
NADELEN VAN ONGEWIJZIGDE APK's
Heel begrijpelijk zou de situatie gereserveerd zijnvoor niet-afgestemde toepassingspakketten. Het lezen van bronnen zou langzaam zijn en het geheugengebruik zou zich aan de bovenkant van het spectrum bevinden. Het zou ook afhangen van het aantal niet-uitgelijnde applicaties. Als er bijvoorbeeld minder applicaties zijn met een niet-uitgelijnde thuisapplicatie, ziet u langzamere starttijden van applicaties. Dit is het beste scenario. Voor een worst case scenario zal het hebben van een aantal niet-uitgelijnde applicaties ertoe leiden dat het systeem herhaaldelijk processen start en doodt, worstelt met vertragingen en enorme batterij leegloop.
HOE DOE JE HET DAN?
Zoals eerder vermeld, werd de zipalign-tool vanaf 1.6 een onderdeel van Android SDK. Het is te vinden in de map ‘tools’ van de SDK. Voer het commando uit om het te gebruiken:
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
waar infile.apk is het bronbestand, en outfile.apk is het uitvoerbestand.
Bovendien kunt u ook de uitlijning van een APK-bestand controleren met de volgende opdracht:
zipalign -c -v <alignment> existing.apk
waar existing.apk kan elk toepassingspakket zijn dat u moet verifiëren. Ook de <Alignment> tag in beide opdrachten moet een integraal zijnwaarde (anders retourneert de opdracht ongeldig). Deze waarde, hoewel dit een geheel getal kan zijn, MOET altijd 4 zijn, wat een 32-bits uitlijning zou bieden. Elke andere waarde en het zal effectief niets doen.
Ten slotte, voor de vlaggen die in deze opdrachten worden gebruikt,
- -f : overschrijft het bestaande outfile.zip
- -v : geeft uitgebreide uitvoer
- -C : bevestigt de uitlijning van een bepaald bestand
WOORD VOORZICHTIG: zipalign-bewerking mag alleen worden uitgevoerd na je hebt het APK-bestand met je privé ondertekendsleutel. Als u uitlijnt voordat u ondertekent, zal de ondertekeningsprocedure de uitlijning verstoren. Hetzelfde geldt voor elke andere wijziging, toevoeging of verwijdering van het APK-bestand. Elke wijziging na het uitvoeren van zipalign zal de uitlijning ongedaan maken.
Disclaimer: Deze handleiding is alleen bedoeld voor educatieve doeleinden. Dit is op geen enkele manier een vervanging voor de Android-ontwikkelaarstoolkit, noch bedoeld om te worden gebruikt voor ontwikkelingsdoeleinden. AddictiveTips biedt geen ondersteuning met betrekking tot het hier gepresenteerde materiaal.
Comments