如何向Android App Bundle(AAB)文件中添加原生调试符号?
Android Studio 4.1.x环境下AAB未包含原生调试符号的解决方案
核心问题根源
你使用的Android Gradle Plugin(AGP)4.1.3版本存在功能限制:debugSymbolLevel配置项虽然在该版本已被加入,但AGP 4.1.x并未真正实现自动将原生调试符号打包进AAB的逻辑,该功能是从AGP 4.2版本才正式落地生效的,所以添加配置后也不会生效。
解决方案
方案1:升级AGP版本(推荐)
这是最简便的长期解决方案,操作步骤如下:
- 先将项目的Gradle版本升级到6.7.1及以上,和AGP 4.2.x版本匹配
- 修改项目根目录build.gradle中的AGP版本为4.2.2(或更高的稳定版,注意和Gradle版本适配即可)
- 保留app模块build.gradle中的配置:
android { buildTypes { release { ndk { debugSymbolLevel = 'SYMBOL_TABLE' // 也可选择'FULL',前者仅包含符号表体积更小,后者包含完整调试信息可支撑更深度的问题排查 } } } }
- 重新构建Release版AAB即可,打包后AAB体积会有明显增加,说明符号已经成功打入。
方案2:不升级AGP,手动上传调试符号
如果暂时不方便升级AGP,可以手动导出符号文件上传到Google Play Console:
- 找到项目中未剥离调试符号的原生库文件:
- 若使用CMake编译,路径为
app/build/intermediates/cmake/release/obj/ - 若使用ndk-build编译,路径为
app/build/intermediates/ndkBuild/release/obj/
该目录下会有各个CPU架构(armeabi-v7a、arm64-v8a等)对应的文件夹,里面的.so文件就是带完整符号的版本
- 若使用CMake编译,路径为
- 按照架构文件夹的目录结构打包为zip文件,注意zip的根目录直接是各个架构的文件夹,不要额外嵌套层级
- 进入Google Play Console的对应版本提交页面,找到「调试符号」上传入口,上传刚才打包的zip文件即可消除警告。
验证方法
如果使用自动打包的方案,可以在构建完成后手动解压AAB文件,检查是否存在BUNDLE-METADATA/com.android.tools.build.debugsymbols/目录,目录下存在对应架构的符号文件即为配置生效。
内容的提问来源于stack exchange,提问作者Ton
相关产品推荐
相关产品推荐

