Was bedeutet "Odex" und "Deodex"? Die komplette Erklärung

Ganz ehrlich, wie viele von Euch, die das lesen, haben sich die ROM-Foren angeschaut, nur um immer wieder über diesen komplett fremdartigen Begriff zu stolpern. Hey, ist ok, ging mir genauso. Genau genommen bringen die Begriffe Odex und Deodex die Augen von Moddern zum Glänzen. Also, worüber reden die eigentlich?

Um deodex zu verstehen, sollten wir uns erstmal mit Odex befassen.

odex = Optimized Dalvik Executable

Wie ihr sicher wisst, sind Android Apps auf eurem Gerät als .apk Dateien (eigentlich ZIP-Archive) gepackt. Stock Android ROM's verwenden eine Odex-Dateistruktur, wobei odex für eine "optimierte" ausführbare Dalvik-Datei steht. Das bedeutet, dass für jede APK eine dazugehörige Odex Datei existiert. Das gilt genauso für die Framework-Dateien im .jar (Java Archive) Format.

Beispiel: Auf diesem nicht gerooteten Galaxy Nexus seht ihr zum Einen folgende Datei

system/app/Phone.apk

sowie auch

system/app/Phone.odex



Doch was genau sind diese Odex-Dateien?

Wenn Android Eure Apps ausführt oder Framework-Bestandteile verwendet, muss es die in den .apk und/oder .jar Dateien enthaltenen komprimierten Daten lesen und interpretieren. Eine Odex-Dateistruktur beschleunigt diesen Prozess durch eine .odex Datei, welche die wichtigsten Daten unkomprimiert speichert, damit Android diese Daten schnell verarbeiten kann, bevor der restliche, komprimierte Teil der Daten verarbeitet wird. Der Sinn ist, die Bootzeiten zu verkürzen und Apps generell schneller laden zu lassen.

Also was ist deodex?

Die Odex-Dateistruktur funktioniert wunderbar als Werkzeug zur Optimierung, ausgenommen man möchte modden/themen. Odexte Apps und Frameworks indizieren ein besonderes Problem für jeden, der sein System modifizieren möchte aufgrund der Tatsache, dass die zu verändernden Ressourcen in 2 Dateien aufgesplittet sind. Theming (das Modifizieren von Symbolen/Lockscreen/Statusbar etc.) z.B. verlangt normalerweise, dass System-Bitmaps durch eigene ausgetauscht werden und das ist fast unmöglich bzw. extrem aufwendig in "odexten" Umgebungen. Die Lösung lautet, das Dateisystem zu deodexen, d.h die ausgelagerten unkomprimierten Daten in den .odex Dateien wieder in ihre .apk oder .jar Dateien zu integrieren.

Auf diesem Galaxy Nexus, auf dem ein Custom ROM läuft, sehen wir wieder die

system/app/Phone.apk

doch nicht mehr die dazugehörige .odex Datei.

Die neu zusammengesetzten Daten landen in der classes.dex innerhalb der .apk Datei.



Also was sollte man verwenden?

Der einzige Grund, sein ROM zu deodexen, ist das Theming/Modding. Es wird Euer Gerät nicht schneller machen. Technisch gesehen sollte es das Gerät sogar verlangsamen, doch in der Praxis ist dieser Unterschied nicht wahrnehmbar. Nach meiner Erfahrung kommt jedes Custom ROM pre-DeOdexed daher und zipaligned eure Apps bei jedem Boot.

Zipaliging ist das Reorganisieren und Optimieren eurer APK's, damit Android sie schneller verarbeiten kann. Es ist vergleichbar, wenn nicht sogar besser als die Odex-Dateistruktur, so bekommt ihr das Beste aus beiden Welten; Ein modifizierbares ROM mit der Geschwindigkeit einer optimierten Dateistruktur. So liegt der einzige Unterschied in der Modifizierbarkeit. Es liegt an euch, zu entscheiden, was ihr benötigt.

Uhrzeit
Kalender