2012-03-06 25 views

risposta

15

This Blog article spiega la struttura interna di file ODEX:

cosa è un file ODEX?

Nel file system Android, le applicazioni sono disponibili in pacchetti con l'estensione .apk. Questi pacchetti di applicazioni o APK contengono determinati file .odex la cui funzione presunta è di risparmiare spazio. Questi file 'odex' sono in realtà raccolte di parti di un'applicazione che sono ottimizzate prima dell'avvio. In questo modo si velocizza il processo di avvio, dato che èprecarica parte di un'applicazione. D'altra parte, rende anche l'hacking di quelle applicazioni difficili perché una parte della codifica ha già stato estratto in un'altra posizione prima dell'esecuzione.

+0

Se spero che la mia app abbia la stessa funzione (applicazioni eseguite in odex non APK), come si fa? – user1253435

+0

Dovresti ottenere un segno meno! Il dalvik non ottimizza il tempo di avvio. Il codice è ottimizzato come in un compilatore da un linguaggio di alto livello a un livello inferiore, solo che in questo caso il codice per Dalvik è quasi una traduzione di codice macchina. Questo è il motivo per cui è possibile creare un'app da C++, non solo da java. – cox

65

The blog article è principalmente corretto, ma non completo. Per avere una piena comprensione di ciò che fa un file odex, devi capire un po 'di come funzionano i file applicativi (APK).

Le applicazioni sono fondamentalmente gloriosi archivi ZIP. Il codice java viene memorizzato in un file chiamato classes.dex e questo file viene analizzato dalla JVM di Dalvik e una cache del file classes.dex elaborato viene memorizzata nella cache Dalvik del telefono.

Un odex è fondamentalmente una versione preelaborata di classes.dex di un'applicazione che è pronta per l'esecuzione per Dalvik. Quando un'applicazione è odex, il classes.dex viene rimosso dall'archivio APK e non scrive nulla nella cache Dalvik. Un'applicazione che non è odexed finisce con 2 copie del file classes.dex - il pacchetto nell'APK e quello elaborato nella cache Dalvik. Ci vuole anche un po 'più di tempo per lanciare la prima volta da quando Dalvik deve estrarre ed elaborare il file classes.dex.

Se si sta creando una ROM personalizzata, è davvero una buona idea eliminare i file JAR di framework e le app di riserva per ottimizzare lo spazio di archiviazione interno per le app installate dall'utente. Se vuoi il tema, allora semplicemente deodex -> applica il tema -> reodex -> rilascio.

Per realtà deodex, utilizzare piccoli e baksmali:

http://code.google.com/p/smali/wiki/DeodexInstructions

+0

Puoi condividere una tonnellata su come possiamo reodexare un file apk? – Basher51

0

ART

In ARTE, .odex file contengono:

contiene AOT codice compilato per i metodi del APK.

Secondo la documentazione: http://web.archive.org/web/20170909233829/https://source.android.com/devices/tech/dalvik/configure

Inoltre, essi sembrano essere le librerie condivise regolari, dal momento che se si ottiene qualsiasi applicazione, e controllare:

file /data/app/com.android.appname-*/oat/arm64/base.odex 

dice:

base.odex: ELF shared object, 64-bit LSB arm64, stripped 

e aarch64-linux-gnu-objdump -d base.odex sembra funzionare e dare un significativo smontaggio (ma anche alcuni sectio di rifiuti ns).