Android APK软件修改教程,由odex文件生成classes.dex

文章转载自:http://bbs.gfan.com/android-1361976-1-1.html

在我们使用Android手机的时候,某些应用或游戏只是偶尔会用到,所以又不愿意删掉,但是放在ROM里面占空间挺可惜的,他的结构是一个xxx.APK和一个xxx.odex,这样的话,不如把它合并成一个单独的APK安装包,想用的时候再装来的更方便些。这种时候,就需要把优化成APK 文件和Odex文件组成的程序重新合并起来。 需要用到的工具是smali,一个开源的java处理软件:
http://code.google.com/p/smali/downloads/list
一.下载的baksmali和smali的jar文件到工作目录
二.把ROM里面的core.odex, ext.odex, framework.odex, android.policy.odex, services.odex这5个文件也放在同一目录(也可以放在别的目录,通过设置BOOTCLASSPATH指定,默认就是当前目录)。
例:
以teeter为例子 (HTC一些Android常常会内置),ROM里面拿出来的可能是2个文件,teeter.apk + teeter.odex。
1、分解odex文件:
java -jar baksmali-1.2.1.jar -x teeter.odex
如果没其他问题,会在工作目录生成一个out的目录,里面是分解出来的一些文件,我们在此不深究这些文件的作用。
2、把分解得到的文件变成classes.dex:java -Xmx512M -jar smali-1.2.1.jar out -o classes.dex,这样得到了一个有用的classes.dex文件
3、用WinZip或者WinRAR打开teeter.apk文件,把这个classes.dex 放进去
4、最后再用signapk把最新得到的这个包含classes.dex的apk重新签署一下(Auto Sign签名工具往期的文章里有下载),就生成一个可以安装的单独APK程序了。

5、签名完成后即可安装使用了


说明,在最新下载的baksmali-2.0.2.jar

F:\LiTest\framework>java -jar baksmali-2.0.2.jar -x SecCalendar.odex
报了一下异常:
Error occured while loading boot class path files. Aborting.
org.jf.util.ExceptionWithContext: Cannot locate boot class path file /system/framework/core.odex
        at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPath.java:217)
        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)

后面换成 baksmali-1.4.1.jar正常。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值