Dopo aver installato alcune app android
, ho scoperto che cambierà nel file odex
(non apk
) nello smartphone. Come succede? Chi può insegnarmi, sono molto interessato a questo.Cosa sono i file ODEX in Android?
risposta
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.
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:
Puoi condividere una tonnellata su come possiamo reodexare un file apk? – Basher51
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).
Se spero che la mia app abbia la stessa funzione (applicazioni eseguite in odex non APK), come si fa? – user1253435
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