为什么要上传Mapping文件
- ProGuard/R8 代码混淆后,崩溃日志将显示无意义的符号(如
a.a()
) mapping.txt
提供原始代码与混淆名称的映射关系- 未上传mapping文件时,Firebase无法解析崩溃堆栈的真实位置
如果你的打包流程有自动上传mapping文件,则可以不用往下看了,本文介绍的是如何手动上传,因为有些打包场景需要隔离或者无法访问谷歌服务。
手动上传方法
官方唯一推荐的方法是使用Firebase CLI
,通过Firebase控制台已无法手动上传。下面简单介绍一下Firebase CLI
。
Firebase CLI
是 Google 提供的命令行工具,用于管理 Firebase 项目资源。其核心能力包括:
关键特性
-
跨平台支持:基于 Node.js 开发,支持 Windows/macOS/Linux
-
集中化管理:通过命令操作数据库、身份验证、云函数等 Firebase 服务
-
本地模拟测试:内置本地模拟器(Emulator Suite),可在部署前验证配置
-
自动化部署:一键部署静态资源、云函数、安全规则
安装方法
-
通过npm或者Homebrew安装
shellnpm install -g firebase-tools brew install firebase-cli:cite
-
下载相应安装包
安装之后登录到相应账号,命令行方式可以使用firebase login
,软件方式打开后会跳网页登录。另外,java环境变量要确认准备好。
上传mapping文件
Crashlytics
相关的命令如下:

分为两步
- 准备Android resource(XML)
打包的时候会有生成,路径为app/build/generated/crashlytics/res/your_flavor/release/values/com_google_firebase_crashlytics_mappingfileid.xml
,如果提示这个文件无效,则可以用Firebase CLI命令行生成,firebase crashlytics:mappingfile:generateid --resource-file=PATH/android_resource.xml
shell
//输出
i Updating resource file: PATH/android_source.xml
i successfully updated mapping file id
- 跑上传命令
firebase crashlytics:mappingfile:upload --app=Firebase_APP_ID --resource-file=PATH/android_resource.xml PATH/mapping.txt
如果上传成功,将会有如下提示:
shell
//输出
i Updating mapping file: PATH/mapping.txt
i successfully updated mapping file
备注:Firebase_APP_ID不是Firebase project id,可以从控制台找或者直接用google-services.json
里的mobilesdk_app_id