Android Apk 反编译替换资源

305 阅读1分钟

前言

由于公司的技术选型比较激进,有些项目还是基于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路径