如何手动上传Android混淆映射文件Mapping.txt到Firebase

219 阅读2分钟

为什么要上传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),可在部署前验证配置

  • 自动化部署:一键部署静态资源、云函数、安全规则

安装方法

  1. 通过npm或者Homebrew安装

    npm install -g firebase-tools
    
    brew install firebase-cli:cite
    
  2. 下载相应安装包

    官网

安装之后登录到相应账号,命令行方式可以使用firebase login,软件方式打开后会跳网页登录。另外,java环境变量要确认准备好。

上传mapping文件

Crashlytics 相关的命令如下:

屏幕截图 2025-06-06 113254.png

分为两步

  1. 准备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

//输出
i Updating resource file: PATH/android_source.xml
i successfully updated mapping file id
  1. 跑上传命令

如果上传成功,将会有如下提示:

// 命令
firebase crashlytics:mappingfile:upload --app=Firebase_APP_ID --resource-file=PATH/android_resource.xml PATH/mapping.txt

//输出
i Updating mapping file: PATH/mapping.txt
i successfully updated mapping file

备注:Firebase_APP_ID不是Firebase project id,可以从控制台找或者直接用google-services.json里的mobilesdk_app_id

大功告成,后续的堆栈就会自动反混淆了!!!