能否通过Google Play留存的Android bundle文件还原丢失的应用源代码?
结论
你无法从Google Play留存的AAB文件100%还原出和原始完全一致的源代码,但可以通过反编译得到可用于二次开发的近似代码。
具体操作方案
- 第一步:从Google Play控制台下载对应版本的AAB文件,入口为「发布 > 生产 > 版本」,找到你之前上传的历史版本即可下载。
- 第二步:使用官方工具
bundletool将AAB转换为通用APK,执行命令:
解压生成的apks文件即可得到通用APK安装包。bundletool build-apks --bundle=/本地路径/你的应用.aab --output=/本地路径/输出包.apks --mode=universal - 第三步:反编译得到业务代码:使用jadx工具直接打开APK文件,即可导出可读性较高的Java代码;若原始应用为Kotlin开发,可手动将导出的Java代码调整为Kotlin语法。
- 第四步:反编译得到资源文件:使用apktool工具反编译APK,可拿到接近原始格式的XML布局、字符串、图片资源等文件。
注意事项
- 若你上架前开启了R8/ProGuard混淆,反编译得到的代码类名、方法名、变量名都会被替换为a、b、c这类无意义命名,需要你结合业务逻辑手动梳理还原,工作量会大幅提升。
- 若应用包含原生SO库,无壳的前提下可通过反汇编工具读取逻辑,但几乎不可能100%还原为原始C/C++源码。
- 反编译得到的代码会丢失全部注释、自定义语法糖结构,和原始手写代码存在明显差异,需要梳理调整后才能正常进行后续版本迭代。
内容的提问来源于stack exchange,提问作者Ualibek Nurgulan
相关产品推荐
相关产品推荐

