第一篇介绍了Apktool 的安装,这篇介绍下Apktool 的基本用法。掌握之后,可以做到
1.反编译apk为smali 语言
2.二次重新打包apk
Decoding 反编译为Smali 语言
apktool d demo.apk -o demo
这样一行代码就搞定,简单解释下参数的意义。
d 表示decode ,反编译,与之对应的是building,编译。demo.apk 是要反编译的目标apk, -o 表示输出地址 ,如果没有 -o 参数,默认在当前文件夹。
反编译之后的文件夹目录结构如下
反编译文件目录结构.png
AndroidManifest.xml 是 Android 项目中的清单文件,可以直接打开查看
res 是资源文件,layout 和 value 都在这里
smali 文件夹 是相关的Java 代码转换为 Smali 语言后的文件。
现在,如果是简单的产看 App 的 UI结构或者使用某些资源,直接拿走即可。
下面介绍下怎么将反编译之后的文件,在重新打包为 Apk,前提是没有修改任何文件。
Building 重新编译Smali 文件为 Apk
apktool b demo -o demo_unsigned.apk
很简单的一个命令,说下各个参数的意义
b,表示 building,编译,与之对应的是 decoding。
demo 文件夹表示要编译的目标文件夹
-o 表示输出文件名和路径。
编译好之后的apk 是没有签名的。
在部分平台下,编译时提示缺少部分资源文件,需要安装 framework.apk 文件,执行下面的命令即可
1.判断是否安装有 framework-res.apk
apktool if framework-res.apk
2.安装 framework-res.apk
apktool if framework-res.apk
framework.apk 在手机上 /system/framework 目录下,复制出来即可。