背景
Android 游戏在验证问题时,有时需要修改配置文件或者替换 so,重打整包耗时较久。
这时可以在本地反编译 apk,替换目标文件(so/ini/manifest)后,再重新打包,快速验证问题。
工具
- Apktool,官网有详细安装教程
反编译
apktool d -o debug app-demo-debug.apk
执行上述命令会生成 debug 文件夹:
- 可以看到 AndroidManifest 文件和 res 下各资源文件等
- smali 目录下对应的就是反编译的 Java 代码,可读性很高,可直接修改
- lib 目录下是 so,按需替换
如只更改配置文件及 so,建议添加 -s 参数,指定不反编译源码,更快速,同时,对于加壳了的 apk,反编译源码可能报错:
回编译(生成 apk)
执行命令生成 apk,这里生成 nosign.apk:
apktool b -o nosign.apk debug
重签名
指定 keystore、ks-key-alias、ks-pass、key-pass 重新生成 apk,之后 adb install 安装即可:
apksigner sign --ks debug.keystore --ks-key-alias your-alias --ks-pass pass:your-ks-pass --key-pass pass:your-key-pass -out signed.apk nosign.apk
反编译 → 回编译 → 重签名 → 安装,整个过程大概 3~5 分钟。