古詩詞大全網 - 個性簽名 - 如何合並apk和odex文件?文件

如何合並apk和odex文件?文件

Android的ROM裏有很多odex文件。與APK的dex文件相比,這個Odex的作用是什麽?仔細看會發現文件名是壹壹對應的,那些對應的apk文件裏沒有dex文件。這將使其廠商能夠保證壹定程度的反盜版,因為沒有dex文件apk無法正常安裝,廠商也無法將odex和不完整的apk文件直接導出使用到/system/bin。

可以想到將odex和apk合並,使apk包含dex文件,這樣合並後apk文件將安裝在/data/中,rom存儲在/system/app中,最終導致用戶可以安裝在Android手機中的軟件變少,占用系統空間。

1.APK生成odex文件的方法;

在開源GIT上編譯build/tools/dexepropt/dexopt-wrapper,只需使用dex opt-wrapper,按照步驟操作即可。

將dexopt-wrapper放入/data/local目錄,用adb shell執行linux命令行,用cd命令進入/data/local目錄。

CD/數據/本地

。/dex opt-wrapper Android 123 . apk Android 123 . odex

第二,將odex和less dex的apk合並成壹個完整的apk文件。

1.下載1.2.2.jar和baksmali-1.2.2.jar,既然要盜版,還需要odex所在的rom中的壹些引用類,壹般在/system/framework目錄下。

2.通過odex生成類文件。

Java-jar baks Mali-1 . 2 . 2 . jar-x Android 123 . odex

執行上述命令行後,會生成壹個out文件夾中帶有android123.odex的類文件。如果有問題,可以從**中產生。rom的/system/framework中的jar轉換成pc上的java環境變量。

3.通過class生成classes.dex文件。

Java-xmx 512M-jar smali-1 . 2 . 2 . jar out-o classes . dex

4.將classes.dex放在apk文件中。

因為apk是zip的mime編碼類型,所以可以用winzip或者winrar直接拖到壓縮包裏,在壓縮包裏apk改名為zip。

5.別忘了簽名,用jdk裏的arsigner和keytool打包重新簽名就行了。

有時候發現別人手機的apk很好,想拿出來裝在自己手機上,卻發現apk不全。其中沒有classes.dex文件,但是有壹個與apk同名的odex文件。不完整的apk是不能安裝的,只能把這個apk和odex組合成壹個完整的apk來安裝。所需工具:

1.smali-1.2.2.jar和baksmali-1.2.2.jar。

2.apk所在的rom中還需要壹些jar文件,都在/system/framework: core.jar,ext.jar,framework.jar,Android.policy.jar,services.jar..

當然,這五條是最基本的,可能還不夠。這種情況將在下面討論。

總* * *分為四個步驟:

1.把下載的smali-1.2.2.jar和baksmali-1.2.2.jar,還有從rom裏挖出來的五個jar放到工作目錄裏,然後把apk和odex放在壹起。

2.將odex文件分解成壹個類文件。命令:Java-jar baks Mali-1 . 2 . 2 . jar-x是要分解的odex文件的名稱。該命令完成後,將生成壹個out文件夾,其中包含所有的類文件。如果有問題,比如有任何異常或者缺包,就去rom取出錯誤信息中需要的包,放在當前目錄下。

3.將該類生成為classes.dex文件。命令:Java-xmx 512m-jars Mali-1 . 2 . 2 . jarout-o classes.dex這壹步應該沒有問題,然後就會生成classes . dex文件。

4.將classes.dex放入apk並覆蓋它。最後壹步是最簡單的。用解壓軟件打開apk,再插入辛辛苦苦生成的classes.dex,就ok了。這個apk會起作用的。如果想重新簽他的名字,找個自動簽名簽名工具簽壹下就行了。