[INFO] Was bedeutet Odex/Deodex?

4

4ndr0

Dauergast
430
Dies ist eine Übersetzung von What do “Odex” and “Deodex” mean? The All Inclusive Explanation

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

OdexedDirectory2-420x373.jpg


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.

DeOdexedDirectory1-420x373.jpg


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.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Kai44137, Firedance1961, Hoschi_S und 137 andere
Endlich, endlich, endlich - hat das mal jemand so erklärt, daß man es auch VERSTEHT! :D
Ganz großes Lob für deine Arbeit! :thumbup:
 
  • Danke
Reaktionen: masekka und 4ndr0
Super Beitrag - vielen Dank!
 
Hallo,

einen ähnlichen Artikel gibt es bereits auch in unserer Wiki :) DEODEXED

Aber ich muss sagen: Danke, das du etwas mehr Licht ins dunkle gebracht hast, das hat mir bei der Umformulierung des Wiki-Artikels ungemein geholfen.
 
Den Wiki-Artikel kannte ich, fand den von talkandroid.com aber um einiges verständlicher. Darfst gerne meine Übersetzung soweit du möchtest ins Wiki übernehmen.

Jetzt übrigens auch auf giga.de zu finden :biggrin:
 
Da kann ich doch nur noch Glückwünsche aussprechen, das zeigt mal wieder das hier verdammt qualitative Beiträge zusammen kommen.
 
Hi

Sorry,ich habe es leider immer noch nicht verstanden :confused2:

Ist eine Stock-Rom jetzt eine Odex oder Deodex Rom :confused2:

Auf meinem Note2 läuft die Stock-Rom,also ist sie jetzt Odex/Deodex ?

Danke für die Hilfe
 
Eine Stock-ROM die nicht modifiziert wurde ist grundsätzlich odexed. ;)

4000. Beitrag. :)
 
  • Danke
Reaktionen: Ladylike871 und datt-bo
Im Zweifel einfach mal nach system/framework schauen, wenn da .odex Dateien rumschwirren, ist es odexed.
 
  • Danke
Reaktionen: datt-bo
PJF16 schrieb:
Eine Stock-ROM die nicht modifiziert wurde ist grundsätzlich odexed. ;)

4000. Beitrag. :)



Also Stock ist immer Odex,wenn nicht verändert :biggrin:
Meine Stock-Rom auf dem Not2 hat Root,mehr nicht.
Also immer noch Odex ?

Und danke für die Ehre deines 4000 Beitrages :smile:

Der ursprüngliche Beitrag von 11:37 Uhr wurde um 11:38 Uhr ergänzt:

4ndr0 schrieb:
Im Zweifel einfach mal nach system/framework schauen, wenn da .odex Dateien rumschwirren, ist es odexed.

Danke,für den Tipp.
Muss ich gleich mal nachschauen :smile:
 
Hallo,

auch wenn du Root hast, wird es wohl odexed sein, wie bereit gesagt. Wenn du ein Stock-Rom nicht aktiv selbst deodexed machst, dann ist auch mit root alles noch odexed, das sind zwei völlig unabhängige Sachen ;)

Grüße
Florian
 
  • Danke
Reaktionen: datt-bo
WOW super tolle Beschreibung :D
dankeschön
Sonnenuntergangmoni
 
Zuletzt bearbeitet von einem Moderator:
Super Beitrag,
ich arbeite mich Stück für Stück in die Marterie ein und bin echt dankbar für solche Beiträge!
Also Dankeschön
 
Hallo,

vielen Dank für die Erklärung.
Mich interessiert noch, ob es notwendig ist eine App zu deodexen, wenn man sie nicht ändern sondern nur kopieren will?

Bsp.:
Man möchte die M0t0Email.apk in CM10 nutzen.
Ist es da notwendig die APP und auch die benötigten Framework Dateinen zu deodexen?


Grüße
Ping_2000
 
Nein, an sich nicht, du musst nur darauf achten, das du auch die M0t0Email.odex Datei mit kopierst.

Ein Mischbetrieb ist also rein in der Theorie auch möglich.

Grüße
Florian
 
Hallo,

leider hat es so nicht funktioniert, das CM10 bleibt nun im Bootscreen hängen.
Ich hatte aktuell vergessen bei einer Lib den .odex mit zu kopieren. Die App wurde bis dahin immer beendet, jetzt nach dem die .odex mit unter /system/framework liegt, startet das System nicht mehr.

Hätte ich die Libs noch registrieren müssen (die Signatur)?

Grüße
Ping_2000
 
Hä? Du hast die M0t0Email.odex und die M0t0Email.apk beide im Ordner /system/app liegen, diese kopierst du nun auch wieder in den Ordner /system/app auf dem neuen Gerät. Um welches Gerät handelt es sich denn? Außerdem heißt es nicht gleich, das die App auch funktionieren wird, wenn diese zum Beispiel auf gewisse Frameworks oder Ressourcen des Systems zurückgreift und diese nicht findet, wird das System nicht starten, da diese Systemapp nicht starten kann.

Ich hoffe du hast vorher ein Backup gemacht?
 
Hallo,

das Thema ist etwas komplizierter.
Die App liegt im Ordner /Systeme/app, ohne odex.
Ich habe die APP mit apk_manager "entpackt" um im Manifest die Abhängigkeiten zu finden. Diese hab ich dann aus /system/framework ebenfalls kopiert.
Weiter habe ich die Libs dann in /system/etc/permissions mittels der zugehörigen XML Dateien "registriert".

Im Anschluss musste ich noch die normlen Email.apk und Exchange.apk umbenennen, da die netten Entwickler von M0t0 die Packages der normalen Anwendung nutzen und es zu Konflikten kam (beim Installieren).

Ich hatte die Anwendung installiert und leider lies sie sich nicht starten.

Nach kurzer Suche und der Frage hier im Forum, habe ich die von mir beim ersten mal vergessen .odex Datei noch mit nach /System/Framework kopiert.

Jetzt hängt CM10 leider. Im Prinzip kann ich es einfach im Safestrap neu "installieren". Soweit kein Problem mit Backup etc. mich hätte nur interessiert wieso sich diese App nicht einfach übertragen lässt, bzw. ob man die Libs noch registrieren muss oder ähnliches?

Grüße
Ping_2000

P.S. Motorola Razr Maxx
 
Puhu, gute Frage, ich glaube da bin ich so aus dem Stehgreif etwas überfragt. Was sind dass denn für Libarys? Musstest du irgendwas überschreiben? Sind das zwei Motorola Maxx?
 
Die Libs sind von M0t0, überschrieben wurde nichts.

Tja irgendwie schon komisch. Der Launcher vom Razer M lies sich ohne Probleme installieren ... aber der brauchte auch keine Libs ...

Grüße
Ping_2000
 
Zuletzt bearbeitet:

Ähnliche Themen

Kiwi++Soft
  • Gesperrt
  • Angepinnt
  • Kiwi++Soft
Antworten
0
Aufrufe
4.463
Kiwi++Soft
Kiwi++Soft
ikarusx3
Antworten
364
Aufrufe
538.779
Cpt. Future
C
Zurück
Oben Unten