合並apk和odex 為完整的apk安裝文件


from:http://bbs.hiapk.com/thread-1151284-1-1.html

1.安裝java,這個自己去網上下載,這里不給地址了;
2.下載工具,這里我給個工具包 tools(其實也是我在壇子里找的,對分享者表示感謝),解壓縮后使用;解壓后有這些文件:
<ignore_js_op>1.JPG 
3.把想合並的apkodex放在解壓后的tools文件夾下面;
4.要把該apkodex 文件所在的MOD 里的五個文件同時放在tools文件夾下面,者五個文件是:core.jarext.jarservices.jarframework.jarandroid.policy.jar;如果MOD里有這五個文件的odex文件,只需要五個文件的odex文件就可以了(多謝 釋放 提醒)。其實在你把odex文件拖到deodex后,如果文件不全,會有錯誤提示缺少那個文件的。
5.下載簽名軟件

-------------------------------------------------分割線----------------------------------------------------------------------

前面的准備工作做好之后就可以開始主要的操作了(以123.apk123.odex為例):
1.123.odex拖放到deodex.cmd上面去,出現下面的窗口后,按任意鍵結束,此時會在tools文件夾下生成一個123文件夾;<ignore_js_op>1.JPG 
2.123文件夾拖放到odex.cmd,出現下面的窗口后,按任意鍵結束,此時會在tools\123文件夾生成classes.dex
<ignore_js_op>2.JPG 
3.用好壓工具打開123.apk,不要解壓縮,將得到的classes.dex拖進去;
<ignore_js_op>3.JPG 
4.保險期間,將加入了classes.dex123.apk重新簽名;

5.把上一步的123.apk放到 簽名 文件夾下面,雙擊Sign.bat,等待片刻會生成123-signed.apk,這個就是可以安裝的apk文件了,拿去安裝使用吧!<ignore_js_op>4.JPG 

***************************分割線*********************************************

所有步驟就是這些了,教程終於完成了,自己實踐的步驟,下面你懂得……
所用到的tools和簽名工具在壇子都有,搜索一下,應該能找到,要不改天補上…… 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分割線~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
現在2.2和2.3系統已經很多了,想合並2.2或2.3系統的文件的TX也有,原來上傳的工具之支持2.1的文件,現在更新其中的smali和baksmali為1.2.6版,能夠支持2.2和2.3了,附件加壓后把文件名的“-1.2.6”刪去,即文件名為smali和baksmali后替換原來tools文件夾內的文件就可以了,其他文件不用替換,操作過程依舊!

 

 

可能出現的問題:

1:

為了將ROM中system/app下的CertInstaller.odex反編譯為CertInstaller.dex,輸入命令:

 

 

 

“java -jar baksmali.jar -x CertInstaller.odex”

 

 

 

出現如下錯誤:

 


org.jf.util.ExceptionWithContext: Cannot locate boot class path file /system/framework/core.odex
        at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPath.java:2
17)
        at org.jf.dexlib2.analysis.ClassPath.fromClassPath(ClassPath.java:161)
        at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:59)
        at org.jf.baksmali.main.main(main.java:274)

 

          

 

 

 

提示的意思是缺少“core.odex”,於是將core.odex放到當前目錄,重新輸入命令,還是出現同樣的錯誤!

 

 

 

解決方法在當前文件夾下新建system文件夾,並在system文件夾下建立framework文件夾,然后將

 

常用的一些odex放入framework文件夾下,如core.odex, ext.odex, framework.odex, android.policy.odex, services.odex(在相應ROM中system/framework/下提取,或從相應源碼中out/.../system/framework/獲得),

 

再輸入命令:

 


java -jar baksmali.jar -d ./system/framework -x CardManager.odex

 


按照它的提示缺哪個就將相應的odex放入framework文件夾,直到命令成功運行不報錯誤,成功后會在

 

當前文件夾下會生成一個out文件夾

 

 

 

最后輸入命令:

 

 

 

java -Xmx512M -jar smali.jar out -o classes.dex 

 

 

 

即可生成classses.dex文件

 

2:NullPointExcpetion的問題

smali和baksmali的版本不對,請到

3:

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: bad magic value: 64 65 79 0a 30 33 36 00
        at org.jf.dexlib.DexFile.<init>(DexFile.java:382)
        at org.jf.baksmali.main.main(main.java:249)
繼續換版本,換成了1.2.6問題解決

 

總結一下:1.3.3可能是為4.0+准備的,所以很多的2.3.6的odex無法正常編譯。

 

 

 

 

tools

smali_baksmali_1.2.6

smali_baksmali_2.0.3

簽名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM