2013-10-23 11 views
8

In Android, ZipAlign viene utilizzato per allineare le risorse su 4 byte confini per accelerare risorse carico:verifica Zipalign

Il codice di risorse manipolazione in Android possono accedere alle risorse in modo efficiente quando sono allineati su 4 -contatti i confini con la mappatura della memoria. Ma per risorse che non sono allineate (vale a dire quando zipalign non è stato eseguito su un apk), deve tornare a leggerle esplicitamente-che è più lento e consuma memoria aggiuntiva.

Dopo aver eseguito lo strumento, è possibile convalidare l'allineamento utilizzando il comando.

zipalign -c -v 4 application.apk 

Questo produce un rapporto e indica se ci sono errori o meno. Nel mio caso, questi rapporti indicano errori di allineamento, ma il primo numero, che presumo sia la posizione delle risorse nell'APK finale, sembra mostrare che alcune risorse non sono allineate sui 4 byte.

Ecco un all'inizio di questa relazione:

Verifying alignment of APP-signed-aligned.apk (4)... 
     50 META-INF/MANIFEST.MF (OK - compressed) 
    24245 META-INF/KEYS.SF (OK - compressed) 
    49830 META-INF/KEYS.DSA (OK - compressed) 
    50683 AndroidManifest.xml (OK - compressed) 
    53096 assets/Assets/DB_Normal.db (OK) 
    595425 assets/Assets/Common/DM/Structures.xml (OK - compressed) 

Cosa mi sono perso? Il primo numero è la posizione della risorsa? Ad esempio, Structures.xml sembra essere a 595425, che non è un multiplo di 4 byte.

risposta

6

L'allineamento non ha importanza per i dati compressi.

L'idea è di essere in grado di mappare in memoria i blocchi non compressi e di accedervi direttamente. Se, ad esempio, il decodificatore PNG tenta di accedere ai dati come numeri interi a 32 bit e si dispone di un emulatore che emula il comportamento della CPU ARM peggiore e genera un SIGBUS quando si esegue un accesso non allineato a 32 bit, non si può banalmente accedere ai dati dell'immagine se non è allineato.

Il codice di gonfiaggio di zlib non interessa se i dati sono allineati, quindi zipalign non si preoccupa di allineare i dati compressi.

+0

Questo ha perfettamente senso, grazie! –