Auto Deodex Tool

  • [webdisk]321[/webdisk]Dies ist ein Tool, zum automatischen "deodexen" von z.B. Miui ROM Versionen, die direkt von den chinesischen Entwicklern herrausgegeben werden. Funktioniert mit ALLEN Androidgeräten.


    OBJECTIVE:
    Automate/batch processing of deodexing jars and apks (odexed rom)


    USAGE:
    Run AutoDEOToolMain.bat


    IMPORTANT:
    - PLEASE AVOID SPACES IN THE TOOL FOLDER PATH FOR NOW
    - Good path use underscores or only letters, nos. (L:\TOOL\AutoDEOTool1.0.1)
    - Some of the APKs does not like the -mX optimization so watch for those


    QUICK HOW TO:
    To deodex framework files,
    - Place the JARs and corresponding ODEX files in the directory "_framework".
    - Otherwise, place deodexed framework JARs into the directory "deodexed_JAR".
    To deodex APK files,
    - Place the APKs and corresponding ODEX files in the directory "_app".
    (1) is for stock android deodexing
    (2) is for non stock, such as sense, miui where you can put a custom bootclasspath
    (3 to 6) options are for deodexing apks only or jars with 1 and 2 functionality
    Options to change between smali-baksmali versions


    NOTES:
    - Basic out is performed by the tool and classes.dex is just added to the jar/apk
    - No compression feature yet for that would be a separate option, i turned it off for FC with miui soundrecorder apk


    REQUIREMENTS:
    - you must have java installed on your machine, you may even have it already, mine is:
    java version "1.6.0_21"
    Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
    Java HotSpot(TM) 64-Bit Server VM (build 17.0-b17, mixed mode)
    - tested on windows 7, x64 pc



    Version 1.0.1
    - Initial Release
    - Deodex stock and custom bootclass jars and apks of a rom
    - Deodex stock and custom bootclass apks only
    - Deodex stock and custom bootclass jars only

    Version 1.0.2
    - Added optimized JARs and APKs option
    - Added compression level, functioning separately
    - Added clean folders
    - Fixed compression levels when -a for all called batch


    [Blockierte Grafik: http://img7.imageshack.us/img7/5079/autodeotoolmain.png]


    [webdisk]320[/webdisk]

    Always believe that something wonderful is about to happen.

    Einmal editiert, zuletzt von alf ()

  • Hi Micha :)


    Ich probier gerade zum ersten Mal mit dem Tool die odex apk´s/jar´s vom SGS 2 zu deodexen.
    Jetzt mein Problem, bei mir ist im framework Ordner nach dem Vorgang einiges übriggeblieben und wurde nicht deodexed.


    android.policy.jar samt odex,
    ext.jar samt odex,
    framework.jar samt odex,
    services.jar samt odex


    Warum wurden die vier Jar´s nicht deodexed?


    Ausserdem sind die beiden apk´s (framework-res.apk und twframework-res.apk) noch vorhanden, da vermute ich mal das diese nicht verändert werden und ich sie einfach so benutzen kann, oder liege ich da falsch?


    Ist halt Neuland für mich :)

  • Ich habe das Tool in seiner neusten Version noch nicht getestet... habe es einfach nur hier verlinkt und reingesetzt erstmal... muss ich selber erst mal schauen...

    Always believe that something wonderful is about to happen.

  • APK´s oder Jar´s die kein odex gegestück haben braucht man nicht deodexen.


    Wenn welche übrig geblieben sind dann hast du den bootclasspath nicht richtig angegeben.

  • APK´s oder Jar´s die kein odex gegestück haben braucht man nicht deodexen.


    Wenn welche übrig geblieben sind dann hast du den bootclasspath nicht richtig angegeben.

    Ok, also wird wohl framework-res.apk und twframework-res.apk nicht deodexed, aber was ist mit den 4 Jar´s die auch ne odex Datei haben?
    Wie kriege ich den raus was für einen boothclasspath ich da benutzen soll?
    Wobei boothclasspath mir auch net wirklich was sagt. :)




    Ps: Micha, ich hab mal den Bedankomat im Startpost aktiviert. Ist hoffentlich ok. :)

  • Deodexing




    Was ist deodexing?:


    Bei den Stock ROMs hat es jeweils im /system/app oder im
    /system/framework Ordner nicht nur APK- bzw. JAR-Dateien, sondern auch
    die dazugehörigen ODEX-Dateien.


    Beim Deodexing wird die ODEX-Datei zurück in eine classes.dex Datei konvertiert und in die APK/JAR Datei gepackt.




    Was bringt ein deodextes ROM?:


    Diese deodexten Dateien sind meistens kleiner als die APK/JAR + die
    ODEX-Datei zusammen. Wenn man z.B. den ganzen /system/app und
    /system/framework Ordner deodext, kann man da schon einige Megabytes
    sparen.


    Deodexte ROMs sind auch für Designer/Themer ganz interessant. Denn bei
    diesen ROMs kann man ohne weiteres die Schriftgrösse oder Schriftfarbe
    verändern.




    ODEX-Dateien:


    Kurz gesagt ist eine ODEX-Datei eine optimierte Version einer
    classes.dex Datei, welche Geräte spezifische Optimierungen beinhaltet.
    Insbesondere hat eine ODEX-Datei Abhängigkeiten auf jede
    "BOOTCLASSPATH" Datei, die geladen wird, wenn sie generiert wird.


    Diese ODEX-Datei ist nur dann gültig, wenn man sie mit genau diesen
    "BOOTCLASSPATH" Dateien verwendet. Die Dalvik Virtual Machine erzwingt
    dies, indem sie eine Prüfsumme für jede Datei erstellt, auf die die
    ODEX-Datei abhängig ist und stellt sicher, dass die Prüfsumme für jede
    Datei übereinstimmt, wenn die ODEX-Datei geladen wird.




    BOOTCLASSPATH:


    Der BOOTCLASSPATH ist eine einfache Liste, welche die Klassen, der
    APK-/JAR-Dateien beinhaltet, die geladen werden können. (Zusätzlich zu
    den wichtigsten APK-/JAR-Dateien, die geladen werden.)


    Ein normales Android System hat 5 JAR-Dateien in seiner "BOOTCLASSPATH"
    Datei: core.jar, ext.jar, framework.jar, android.policy.jar und
    services.jar. Diese Dateien befinden sich alle im Ordner
    /system/framework. Einige APKs haben auch gewisse Abhängigkeiten zu
    zusätzlichen JAR- oder APK-Dateien über die fünf Basis JARs hinaus.


    Beispiel:


    Für die Anwendung, die Google Maps verwendet, wird
    com.google.android.maps.jar an die BOOTLCLASSPATH-Datei für die APK der
    App angehängt werden.

  • Du mußt bei dem Auto Deodex Tool die Option 2 benutzen und dort den bootclasspath angeben.


    Als Beispiel :


    core.jar:corejunit.jar:framework.jar:ext.jar:bouncycastle.jar:javax.obex.jar:



    Wenn du denn bootclasspath nicht angibts und z.b. die bluetooth.apk deodexen möchtest kommt so eine Fehlermeldung :


    Error occured while loading boot class path files. Aborting.
    org.jf.dexlib.Code.Analysis.ClassPath$ClassNotFoundException: Could not find superclass Ljavax/obex/
    ServerRequestHandler;
    at org.jf.dexlib.Code.Analysis.ClassPath$ClassDef.loadSuperclass(ClassPath.java:784)
    at org.jf.dexlib.Code.Analysis.ClassPath$ClassDef.<init>(ClassPath.java:668)
    at org.jf.dexlib.Code.Analysis.ClassPath.loadClassDef(ClassPath.java:280)
    at org.jf.dexlib.Code.Analysis.ClassPath.initClassPath(ClassPath.java:163)
    at org.jf.dexlib.Code.Analysis.ClassPath.InitializeClassPathFromOdex(ClassPath.java:110)
    at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:98)
    at org.jf.baksmali.main.main(main.java:278)
    Error while loading class Lcom/android/bluetooth/opp/BluetoothOppObexServerSession; from file H:\Aut
    oDEOTool1.0.2\AutoDEOTool1.0.2\_app\Bluetooth.odex
    Error while loading ClassPath class Lcom/android/bluetooth/opp/BluetoothOppObexServerSession;


    Das System kann die angegebene Datei nicht finden.



    An der rot markierten Stelle siehst Du welche Abhängigkeit ihm fehlt : also hier die javax.obex.jar aus dem framework-verzeichnis.


    Also trägst du als bootclasspath javax.obex.jar ein.


    Du kannst mehrere durch einen doppelpunkt getrennt hintereinander schreiben.

  • Super jetzt klappt das auch, den Framework Ordner habe ich schon fertig.
    Jetzt muss ich das Ganze mal auf mein Fon schmettern und schauen ob alles funktioniert.



    Tausend Dank Andy :thumbsup: :thumbup: :thumbsup: :thumbup:



    Edit:
    Leider sind 2 Apk´s (Email, MobilePrint) übrig geblieben. Die wollen sich einfach net deodexen lassen.


    Fehlermeldung ist:
    Could not find superclass Ljava/awt/Component (Email.apk)
    ( Es gibt bei mir keine java.jar/odex )
    Could not find superclass Ljavax/swing/table/AbstractTableModel (Mobile Print)
    ( Gibt bei mir zwar ne javax.jar/odex, aber die funktioniert nicht)


    Ich habe alle jar/odex Dateien durchprobiert, keine funktioniert.
    Wäre schade wenn die Aktion jetzt an den (für mich) unbedeutenden Apk´s scheitern würde,
    aber ich habe jetzt ca 1 Std rumprobiert und nix geht.
    Vielleicht fällt Dir ja dazu noch was ein.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!