前言
由于公司的技术选型比较激进,有些项目还是基于Flutter 1.0 开发的,上线之后就没怎么维护,导致现在根本跑不起来。最近国外的客户反馈了一些多语言的问题,希望我们能替换部分不准确的翻译,买办法只能反编译Apk,然后替换资源。基于这次经历,记录一下反编译流程。
替换资源
1.1 工具
反编译常用的工具:
- ApkTool:反编译Apk资源 Apktool
- dex2jar:将dax文件转换成jar文件
- jd-gui:查看jar包具体代码
1.2 反编译资源
apktool d -o 反编译后文件夹路径 Apk文件路径
// apktool d -o /outfloder /origin.apk
d 代表 解码的意思
-o 设置解码后生成文件的路径
现在可以替换资源,修改版本号等
1.3 重新打包
apktool b -o Apk生成路径 修改后的文件夹
// apktool b -o /no_sign.apk /outfloder
b 代表编码
-o 生成的Apk文件路径
1.4 zipalign内存对齐
/Users/XXX/Library/Android/sdk/build-tools/32.0.0/zipalign -v 4 未对齐Apk文件 对齐后的Apk文件 //4字节对齐优化
/Users/XXX/Library/Android/sdk/build-tools/32.0.0/zipalign -c -v 4 in.apk // 检查是否内存对齐
1.5重新签名
/Users/XXX/Library/Android/sdk/build-tools/32.0.0/apksigner sign --ks 签名文件路径 --ks-key-alias 别名 --out 签名后Apk生成路径 未签名Apk路径