linghujava 2010-06-10
有时候发现别人手机里有一款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 -jar baksmali-1.2.2.jar -x <a.odex>
<a.odex>处是你要分解的odex文件的名字,命令完成之后,会生成一个out文件夹,里面就是所有的class文件。如果出现问题,比如什么异常,缺少包什么的,就更到rom里面把出错信息里面要求的包拿出来,放到当前目录下。
3. 将class生成为classes.dex文件。
命令:java -Xmx512M-jar smali-1.2.2.jar out -o classes.dex
这一步应该不会有什么问题,然后会生成classes.dex文件。
4. 把classes.dex放入apk里面,把盖子盖上。
最后这一步最简单了,用解压缩软件打开apk,然后把千辛万苦生成的classes.dex塞进去,就ok了。这个apk就能用了。如果想给他重新签个名的话,去找个Auto Sign签名工具签署一下就行。
adb shell cd system/app rm *.apk21. 获取管理员权限: adb root22. 启动Activity: adb shell am start -n 包名/包名+类名。