合并apk和odex的方法
转自:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-3326
有时候发现别人手机里有一款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里面抠出来的5个jar,放到工作目录,然后apk和odex也放到一起。
2.分解odex文件为class文件。
命令:Java-jarbaksmali-1.2.2.jar-x<a.odex>
<a.odex>处是你要分解的odex文件的名字,命令完成之后,会生成一个out文件夹,里面就是所有的class文件。如果出现问题,比如什么异常,缺少包什么的,就更到rom里面把出错信息里面要求的包拿出来,放到当前目录下。
3.将class生成为classes.dex文件。
命令:java-Xmx512M-jarsmali-1.2.2.jarout-oclasses.dex
这一步应该不会有什么问题,然后会生成classes.dex文件。
4.把classes.dex放入apk里面,把盖子盖上。
最后这一步最简单了,用解压缩软件打开apk,然后把千辛万苦生成的classes.dex塞进去,就ok了。这个apk就能用了。如果想给他重新签个名的话,去找个AutoSign签名工具签署一下就行。
相关推荐
adb shell cd system/app rm *.apk21. 获取管理员权限: adb root22. 启动Activity: adb shell am start -n 包名/包名+类名。