Android Rom定制与修改学习(二)

由于ROM内部自带APP的APK文件都已经进行了ODEX化,需要对ROM内部自带APP进行深度修改,必须对ODEX进行反编译,另外对APK文件直接解压得到的XML文件也是不能修改的,因此对APK文件也需要进行合适的解包。

  • 1、APK文件解打包
  • 2、Odex文件反编译

1、APK文件解打包

  对APK解打包主要采用apktool工具,同样的,最好下载最新版使用,目前实测2.2.2版本解包android6.0的自带APK没有问题,之前使用2.2.0版本无法解包,将apktool放到bin目录,首先需要转到framework文件夹运行以下命令:

sudo apktool if framework.res.apk

  (所有.jar工具都使用bash进行了二次打包,前置了java -jar命令)
  将会生成/home/xxxx/.local/share/apktool/framework/1.apk文件,此文件为解包依赖文件,在解包rom自带app时需要先更新此文件。
  之后转到APK所在目录运行如下命令:

sudo apktool d xxx.apk

  如果发生错误请首先查看文件和文件夹权限是否有进行合理设置,因为apktool会在该目录下生成一个同名文件夹,里面包含有APK文件内含的大部分文件,此时即可对xml和res文件进行修改,修改完成后需要重新打包,运行命令:

sudo apktool b xxx

  xxx为文件夹名称,所有命令带上使用root权限避免权限不够问题,另外apktool官方文档提到64位系统运行该工具需要32位库的支持,需要提前安装。

2、Odex解打包

  Odex化的APK文件夹中包含有oat文件夹,里面存有Odex文件,为软件java源代码编译而成,使用baksmali和smali工具对其进行反编译:

baksmali x xxx.odex

  在odex文件夹会生成out文件夹,里面包含有Dalvik虚拟机使用的smali文件,看起来比较吃力,可以对其进行进一步转换,生成dex文件:

smali a out

  使用dex2jar工具进行转换:

dex2jar out

  会在当前文件夹生成jar文件,之后就可以用jd-gui查看:

jd-gui out.jar

  同时可另存为zip文件包,里面就是所有的.java文件,即可编辑的源码了,修改且编译后的dex文件可使用dexopt-wrappe转换为odex文件。

你可能感兴趣的:(编程学习)