文章

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. 1. 符号表未正确关联到崩溃报告

  2. 原因分析

旧报告未重新解析:Firebase 不会自动重新解析 已存在的崩溃报告,只有新崩溃会使用符号表。

符号表与应用版本不匹配:上传的符号表与崩溃日志的 Build ID应用版本号 不一致。

未上传完整符号表:缺少主模块(如 libunity.solibil2cpp.so)或依赖库的符号表。

  1. 验证步骤

确认崩溃是否发生在上传符号表之后

在 Firebase 控制台筛选 时间范围,确保查看的是新产生的崩溃。

检查符号表 Build ID 是否匹配

从崩溃日志中提取 .so 文件的 Build ID:

1
readelf -n libfoo.so | grep 'Build ID'
  • 确认上传的符号表文件 Build ID 与其一致。
  1. Unity 特定问题

  2. IL2CPP 符号表处理

未生成 symbols.zip:需在 Unity 构建时勾选 Create symbols.zipProject Settings → Player → Android → Publish Settings)。

符号表未包含所有模块:确保 symbols.zip 包含 libil2cpp.solibunity.so

  • 验证符号表完整性

解压 symbols.zip,检查文件结构:

1
2
3
4
unzip -l symbols.zip
# 预期输出包含:
# - arm64-v8a/libil2cpp.so.debug
# - arm64-v8a/libunity.so.debug
  1. 查看 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 进行授权