混淆Flutter Android App Bundle后如何正确提交调试符号?
Flutter Android应用混淆后调试符号的区别与正确上传方案
两组符号文件的核心区别
- 第一组(
build\app\intermediates\merged_native_libs\release\out\lib目录下的文件):
这是Android原生层的调试符号,对应Flutter引擎、第三方原生依赖的底层代码符号,格式完全符合Google Play对「原生调试符号」的要求,用于解析原生C/C++层的崩溃日志。 - 第二组(
build/symbols目录下的.symbols文件):
这是Flutter Dart代码混淆后的映射符号,专门用来把混淆后的Dart崩溃栈轨迹还原成可读的原始代码,属于Flutter开发者自用的Dart层调试工具,和Google Play要求的原生符号不是一个范畴,所以上传会被拒绝。
提交应用时的正确处理方式
启用代码混淆后,两类符号都需要保留,但上传到Google Play的还是第一组原生调试符号:
- 执行混淆构建命令
flutter build appbundle --release --obfuscate --split-debug-info=./build/symbols后,依旧从build\app\intermediates\merged_native_libs\release\out\lib目录收集原生符号文件,压缩后上传到Google Play的「上传原生调试符号」功能。 - 妥善保存
build/symbols下的.symbols文件,当需要解析Dart层的崩溃日志时,用这些文件配合flutter symbolize命令还原栈信息。
内容的提问来源于stack exchange,提问作者under
相关产品推荐
相关产品推荐

