[INFO] Was bedeutet Odex/Deodex?

Dieses Thema im Forum "Allgemeine Anleitungen/Tutorials (geräteunabhängig)" wurde erstellt von 4ndr0, 18.11.2012.

  1. #1 4ndr0, 18.11.2012
    Zuletzt bearbeitet: 16.04.2013
    4ndr0

    4ndr0 Threadstarter Android-Lexikon

    Registriert seit:
    27.05.2012
    Beiträge:
    1,100
    Erhaltene Danke:
    370
    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

    [​IMG]

    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.

    [​IMG]

    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.
     
    mickey-mouse, zbot, Pierro und 123 andere bedanken sich.
  2. Lion13

    Lion13 Ehrenmitglied

    Registriert seit:
    17.04.2010
    Beiträge:
    17,843
    Erhaltene Danke:
    4,917
    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:
     
    masekka und 4ndr0 bedanken sich.
  3. tekka

    tekka Erfahrener Benutzer

    Registriert seit:
    05.11.2010
    Beiträge:
    151
    Erhaltene Danke:
    35
    Super Beitrag - vielen Dank!
     
  4. ONeill

    ONeill Super-Moderator & Mediator
    Team-Mitglied

    Registriert seit:
    31.10.2011
    Beiträge:
    10,119
    Erhaltene Danke:
    4,004
    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.
     
  5. 4ndr0

    4ndr0 Threadstarter Android-Lexikon

    Registriert seit:
    27.05.2012
    Beiträge:
    1,100
    Erhaltene Danke:
    370
    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:
     
  6. ONeill

    ONeill Super-Moderator & Mediator
    Team-Mitglied

    Registriert seit:
    31.10.2011
    Beiträge:
    10,119
    Erhaltene Danke:
    4,004
    Da kann ich doch nur noch Glückwünsche aussprechen, das zeigt mal wieder das hier verdammt qualitative Beiträge zusammen kommen.
     
  7. datt-bo

    datt-bo Android-Experte

    Registriert seit:
    11.08.2010
    Beiträge:
    698
    Erhaltene Danke:
    96
    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
     
  8. PJF16

    PJF16 Senior-Moderator
    Team-Mitglied

    Registriert seit:
    06.01.2011
    Beiträge:
    9,682
    Erhaltene Danke:
    3,417
    Tablet:
    Nexus 7 (2012)
    Eine Stock-ROM die nicht modifiziert wurde ist grundsätzlich odexed. ;)

    4000. Beitrag. :)
     
    Ladylike871 und datt-bo bedanken sich.
  9. 4ndr0

    4ndr0 Threadstarter Android-Lexikon

    Registriert seit:
    27.05.2012
    Beiträge:
    1,100
    Erhaltene Danke:
    370
    Im Zweifel einfach mal nach system/framework schauen, wenn da .odex Dateien rumschwirren, ist es odexed.
     
    datt-bo bedankt sich.
  10. datt-bo

    datt-bo Android-Experte

    Registriert seit:
    11.08.2010
    Beiträge:
    698
    Erhaltene Danke:
    96


    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:

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

    ONeill Super-Moderator & Mediator
    Team-Mitglied

    Registriert seit:
    31.10.2011
    Beiträge:
    10,119
    Erhaltene Danke:
    4,004
    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
     
    datt-bo bedankt sich.
  12. #12 Sonnenuntergangmoni, 14.12.2012
    Lasted edited by : 26.12.2012
    Sonnenuntergangmoni

    Sonnenuntergangmoni Neuer Benutzer

    Registriert seit:
    12.12.2012
    Beiträge:
    19
    Erhaltene Danke:
    0
    WOW super tolle Beschreibung :D
    dankeschön
    Sonnenuntergangmoni
     
  13. Seefahrer_1

    Seefahrer_1 Neuer Benutzer

    Registriert seit:
    22.11.2012
    Beiträge:
    15
    Erhaltene Danke:
    0
    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
     
  14. Ping_2000

    Ping_2000 Neuer Benutzer

    Registriert seit:
    04.03.2013
    Beiträge:
    5
    Erhaltene Danke:
    0
    Smartphone:
    Motorola Razr Maxx
    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
     
  15. ONeill

    ONeill Super-Moderator & Mediator
    Team-Mitglied

    Registriert seit:
    31.10.2011
    Beiträge:
    10,119
    Erhaltene Danke:
    4,004
    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
     
  16. Ping_2000

    Ping_2000 Neuer Benutzer

    Registriert seit:
    04.03.2013
    Beiträge:
    5
    Erhaltene Danke:
    0
    Smartphone:
    Motorola Razr Maxx
    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
     
  17. ONeill

    ONeill Super-Moderator & Mediator
    Team-Mitglied

    Registriert seit:
    31.10.2011
    Beiträge:
    10,119
    Erhaltene Danke:
    4,004
    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?
     
  18. Ping_2000

    Ping_2000 Neuer Benutzer

    Registriert seit:
    04.03.2013
    Beiträge:
    5
    Erhaltene Danke:
    0
    Smartphone:
    Motorola Razr Maxx
    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
     
  19. ONeill

    ONeill Super-Moderator & Mediator
    Team-Mitglied

    Registriert seit:
    31.10.2011
    Beiträge:
    10,119
    Erhaltene Danke:
    4,004
    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?
     
  20. #20 Ping_2000, 04.03.2013
    Zuletzt bearbeitet: 04.03.2013
    Ping_2000

    Ping_2000 Neuer Benutzer

    Registriert seit:
    04.03.2013
    Beiträge:
    5
    Erhaltene Danke:
    0
    Smartphone:
    Motorola Razr 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
     

Diese Seite empfehlen