默认情况下,Firebase Crashlytics 会自动对您的 Flutter 项目进行插桩测试,以上传必要的符号文件,确保崩溃报告经过去混淆处理,方便用户阅读。
遗憾的是,存在一些可能导致项目未得到完全配置的情况。本指南概述了自动化执行的操作,并提供了调试项目设置的前期步骤。
Apple 平台
检查用于上传 dSYM 文件的配置
添加 Crashlytics Flutter 插件并运行 flutterfire configure
命令时,系统将尝试向项目的 Xcode 工作区添加运行脚本 (run script),该脚本会查找必要的 dSYM 符号文件并将其上传到 Crashlytics。如果没有这些文件,Crashlytics 信息中心会显示“dSYM 缺失”提醒。在上传缺失文件之前,后端将保留异常。
如果您遇到此问题,请先确保已安装了运行脚本:
在项目的 iOS 目录 (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace
) 中找到并打开 Xcode 工作区文件。确定名为
[firebase_crashlytics] Crashlytics Upload Symbols
的运行脚本是否已添加到 Runner 目标的构建阶段。
检查 Flutter 和 Crashlytics 的版本配置(如果使用 --split-debug-info
标志)
如果您的 Flutter 项目使用 --split-debug-info
标志(或者视需要使用 --obfuscate
标志),则需要执行额外的步骤来显示应用的可读堆栈轨迹。
确保您的项目使用的是推荐的版本配置(Flutter 3.12.0 及更高版本和 Crashlytics Flutter 插件 3.3.4 及更高版本),以便您的项目可以自动生成 Flutter 符号(dSYM 文件)并将其上传到 Crashlytics。
Android
检查依赖项配置
flutterfire configure
命令尝试向项目的 Gradle build 文件添加必要的依赖项。如果没有这些依赖项且启用了混淆功能,Firebase 控制台中的崩溃报告可能会经过混淆处理。
确保项目级 build.gradle
和应用级 build.gradle
中存在以下几行内容:
在项目级 build 文件 (
android/build.gradle
) 中,检查是否有以下一行内容:dependencies { // ... other dependencies classpath 'com.google.gms:google-services:4.3.5' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1' }
在应用级 build 文件 (
android/app/build.gradle
) 中,检查是否有以下一行内容:// ... other imports android { // ... your android config } dependencies { // ... your dependencies } // This section must appear at the bottom of the file apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics'
检查您是否在使用 CLI 上传 Flutter 符号(如果使用 --split-debug-info
标志)
如果您的 Flutter 项目使用 --split-debug-info
标志(或者视需要使用 --obfuscate
标志),则需要执行额外的步骤来显示应用的可读堆栈轨迹。
使用 Firebase CLI (v.11.9.0+) 上传 Flutter 调试符号。在报告经过混淆处理的代码 build 的崩溃之前,您需要先上传调试符号。
从 Flutter 项目的根目录运行以下命令:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID:您的 Firebase Android 应用 ID(而不是您的软件包名称)
示例 Firebase Android 应用 ID:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/symbols
:您在构建应用时传递给--split-debug-info
标志的同一目录
如果问题仍然存在,请参阅混淆报告问题排查指南 (Android)。