优化apk的odex处理

前文讲到了apk的反编译流程,但在有的情况下会出现apk的资源文件和代码文件分开的情况,这种情况会出现如下目录结构,并且在apk文件里面并没有dex文件。

结构图

所需工具

合并流程

  1. 将xxx.odex放在与framework同级目录下,有的平台不需要framework文件夹,例如我实验的平台只需要framework/arm/boot.oat文件,将其放在与xxx.odex同级目录,此时不需要framework文件夹。
  2. 输入以下命令,将odex转化为smali文件
    java -jar baksmali-2.2.2.jar x xxx.odex -d framework
    此时会生成一个out目录,此目录就是生成的smali目录。
  3. 输入以下命令,将smali转化为dex文件
    java -jar smali-2.2.2.jar a out -o classes.dex
    此时会生成一个classes.dex的文件。
  4. 经过以上步骤 odex就已经转化为dex,将其添加到apk中(apk实际上是个压缩包)。

后续步骤

以上属于个人体验心得总结,若有不足之处,还望不吝赐教,欢迎批评指正,共同进步

原文地址:https://www.cnblogs.com/cj5785/p/10664874.html