能否从已上传的Google AppBundle或Apple构建包中获取应用源代码?
能否从已上传的Google AppBundle或Apple构建包中恢复原始应用源代码
无法100%还原得到和你丢失的完全一致的原始源代码,仅能反编译得到部分可参考的非完整代码
- Google AppBundle(AAB)相关
AAB是编译后的上架产物,内部包含dex字节码、资源文件、so动态库等文件。你可以通过反编译工具将dex文件转换为Java/Kotlin格式的代码,但这些反编译产物存在以下问题:
丢失所有原始代码的注释、自定义变量名、方法名,如果你开启了ProGuard/R8混淆,所有命名都会被替换为
a、b、c这类无意义字符;编译阶段的优化也会改动代码结构,反编译出的代码逻辑和原始代码存在偏差,同时也无法恢复原始的项目结构、配置文件、构建脚本等非代码内容。
如果发布时没有开启混淆,反编译得到的代码可读性会稍高,但依然不能直接等同于原始源代码,无法直接导入IDE正常编译运行。
- Apple平台构建包相关
上传到App Store Connect的iOS构建包(IPA或xcarchive衍生产物)是编译完成的Mach-O二进制文件,不存在安卓平台的中间字节码,反编译难度更高。仅能通过反汇编工具得到汇编指令,或是通过专用工具还原出部分Objective-C/Swift的类名、方法名,完全丢失注释、自定义命名、原始代码结构,基本不可能还原出可正常编译运行的代码。如果发布时开启了Bitcode,苹果会对上传的构建包做二次编译,反编译得到的内容和你原始编译的版本差异会更大。 - 其他建议
反编译得到的代码仅能用来参考业务逻辑,你需要投入大量时间做整理、还原,整体效率远低于重新实现。如果你的项目之前有过本地备份、或是上传到过代码托管平台,优先找回备份的效率远高于从构建包中反编译内容。
内容的提问来源于stack exchange,提问作者Ricardo Oscar Kanitz
相关产品推荐
相关产品推荐

