wake-up-neo.com

Was sind ODEX-Dateien in Android?

Nachdem einige Android Apps installiert waren, stellte ich fest, dass sie auf dem Smartphone in odex Datei (nicht apk) geändert werden. Wie passiert das? Wer mich unterrichten kann, interessiert mich sehr.

70
user1253435

Der Blogartikel ist größtenteils richtig, aber nicht vollständig. Um zu verstehen, was eine Odex-Datei tut, müssen Sie ein wenig über die Funktionsweise von Anwendungsdateien (APK) wissen.

Anwendungen sind grundsätzlich verherrlichte Zip-Archive. Der Java Code wird in einer Datei namens classes.dex gespeichert und diese Datei wird von der Dalvik JVM analysiert und ein Cache der verarbeiteten classes.dex-Datei wird im Dalvik-Cache des Telefons gespeichert.

Ein Odex ist im Grunde eine vorverarbeitete Version von classes.dex einer Anwendung, die für Dalvik ausführungsbereit ist. Wenn eine Anwendung odexed ist, wird classes.dex aus dem APK-Archiv entfernt und es wird nichts in den Dalvik-Cache geschrieben. Eine Anwendung, die nicht odexiert ist, enthält 2 Kopien der classes.dex-Datei - die im APK gepackte und die im Dalvik-Cache verarbeitete. Der erste Start dauert auch etwas länger, da Dalvik die classes.dex-Datei extrahieren und verarbeiten muss.

Wenn Sie ein benutzerdefiniertes ROM erstellen, ist es eine gute Idee, sowohl Ihre Framework-JAR-Dateien als auch die Standard-Apps zu optimieren, um den internen Speicherplatz für vom Benutzer installierte Apps zu maximieren. Wenn Sie ein Thema erstellen möchten, geben Sie einfach Deodex -> Ihr Thema anwenden -> Reodex -> Release ein.

Um Deodex zu machen, benutze small und baksmali:

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

72
Nathan Strong

Dieser Blogartikel erklärt die Interna von ODEX-Dateien:

WAS IS EINE ODEX-DATEI?

Im Android Dateisystem werden Anwendungen in Paketen mit der Erweiterung .apk geliefert. Diese Anwendungspakete oder APKs enthalten bestimmte .odex-Dateien, deren angebliche Funktion darin besteht, Speicherplatz zu sparen. Diese "odex" -Dateien sind tatsächlich Sammlungen von Teilen einer Anwendung, die vor dem Booten optimiert wurden. Dies beschleunigt den Bootvorgang, da ein Teil einer Anwendung vorgeladen wird. Andererseits erschwert dies auch das Hacken dieser Anwendungen, da ein Teil der Codierung bereits extrahiert wurde an einen anderen Ort vor der Ausführung.

18
theomega

[~ # ~] art [~ # ~]

In Kunst, .odex Dateien enthalten:

enthält AOT-kompilierten Code für Methoden in der APK.

gemäß den Dokumenten: http://web.archive.org/web/20170909233829/https://source.Android.com/devices/tech/dalvik/configure

Darüber hinaus scheinen sie reguläre gemeinsam genutzte Bibliotheken zu sein, da Sie, wenn Sie eine App erhalten, Folgendes überprüfen:

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

es sagt:

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

und aarch64-linux-gnu-objdump -d base.odex scheint zu funktionieren und zu einer sinnvollen Zerlegung zu führen (aber auch zu einigen Abfällen).