Android Firebase
Android Firebase
Android 在 Firebase 上传符号表方案
通过 npm 安装 Firebase-tools
https://firebase.google.com/docs/cli?hl=zh-cn#mac-linux-npm
unity
https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=unity&hl=zh-cn#groovy
1
2
3
npm install firenase-tools
firebase login
firebase crashlytics:symbols:upload --app=firebase_app_id symbols.zip
上传后的符号表日志没有生成解析之后的?
1. 符号表未正确关联到崩溃报告
原因分析
旧报告未重新解析:Firebase 不会自动重新解析 已存在的崩溃报告,只有新崩溃会使用符号表。
符号表与应用版本不匹配:上传的符号表与崩溃日志的 Build ID 或 应用版本号 不一致。
未上传完整符号表:缺少主模块(如 libunity.so、libil2cpp.so)或依赖库的符号表。
- 验证步骤
确认崩溃是否发生在上传符号表之后:
在 Firebase 控制台筛选 时间范围,确保查看的是新产生的崩溃。
检查符号表 Build ID 是否匹配:
从崩溃日志中提取 .so 文件的 Build ID:
1
readelf -n libfoo.so | grep 'Build ID'
- 确认上传的符号表文件 Build ID 与其一致。
Unity 特定问题
IL2CPP 符号表处理
未生成 symbols.zip:需在 Unity 构建时勾选 Create symbols.zip(Project Settings → Player → Android → Publish Settings)。
符号表未包含所有模块:确保 symbols.zip 包含 libil2cpp.so 和 libunity.so。
- 验证符号表完整性
解压 symbols.zip,检查文件结构:
1
2
3
4
unzip -l symbols.zip
# 预期输出包含:
# - arm64-v8a/libil2cpp.so.debug
# - arm64-v8a/libunity.so.debug
- 查看 Firebase 日志
运行上传命令时添加 --debug 参数,捕获详细日志:
1
2
3
4
5
firebase crashlytics:symbols:upload --app=<APP_ID> --debug ./symbols.zip
#关键日志
Successfully uploaded symbols file: /path/to/symbols.zip
本文由作者按照 CC BY 4.0 进行授权