Firebase Crashlytics启用异常:com_crashlytics_build_id为全零值、控制台无数据且映射文件无法上传
我之前也遇到过几乎一模一样的问题,看起来是配置顺序、版本兼容性或者构建任务的问题,咱们一步步来排查解决:
1. 修正Gradle插件应用顺序
你当前的插件应用顺序可能有问题,Google官方要求com.google.gms.google-services必须是最后一个应用的插件,调整app级build.gradle的插件顺序:
// 先应用Android插件 apply plugin: 'com.android.application' // 然后应用Crashlytics插件 apply plugin: 'com.google.firebase.crashlytics' // 最后应用Google Services插件 apply plugin: 'com.google.gms.google-services'
2. 升级Gradle插件版本
你使用的google-services:4.3.5和firebase-crashlytics-gradle:2.5.2版本过于老旧,存在已知的兼容性问题,建议升级到更稳定的版本(匹配你的AGP版本,比如AGP 7.x对应以下版本):
在项目根目录的build.gradle中修改:
buildscript { dependencies { classpath 'com.google.gms:google-services:4.3.15' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' } }
3. 修复com_crashlytics_build_id.xml全0问题
这个文件全0说明Crashlytics插件没有正确执行构建任务,执行以下步骤:
- 执行命令清理项目并重新构建:
./gradlew clean assembleDebug - 检查app模块的
build/generated/res/google-services/debug/values/com_crashlytics_build_id.xml,确认build_id是否生成了非全0的字符串。
4. 启用映射文件上传
默认Debug版本可能不会上传映射文件,在app级build.gradle中显式开启:
android { buildTypes { debug { firebaseCrashlytics { // 开启Debug版本的映射文件上传 mappingFileUploadEnabled true // 如果有C++/JNI代码,开启原生符号上传 nativeSymbolUploadEnabled true } } release { firebaseCrashlytics { mappingFileUploadEnabled true } } } }
构建时不要跳过Crashlytics的上传任务(比如不要加-x crashlyticsUploadSymbolsDebug参数)。
5. 正确测试崩溃
不要在Application.onCreate()中直接触发崩溃(此时Crashlytics还未初始化完成),建议在用户交互后触发,比如按钮点击事件:
// 示例代码(Java) findViewById(R.id.test_crash_btn).setOnClickListener(v -> { throw new RuntimeException("Test Crash for Firebase Crashlytics"); });
崩溃后必须重启应用,Crashlytics会在下次启动时上传崩溃报告,同时确保设备有稳定的网络连接。
6. 验证基础配置
- 确认
google-services.json放置在app模块的根目录,且文件中的package_name与app的applicationId完全一致。 - 登录Firebase控制台,确认当前查看的是你刚添加的应用,且Crashlytics功能处于启用状态(控制台Crashlytics页面顶部的开关)。
7. 查看日志排查问题
用adb过滤Crashlytics相关日志,检查初始化和上传状态:
adb logcat | grep Crashlytics
如果看到Crashlytics initialized successfully说明初始化正常;如果有错误日志(比如网络错误、配置错误),可以根据日志信息针对性解决。
最后,卸载应用并清除项目缓存后重新构建安装,应该就能正常采集崩溃数据了。
内容的提问来源于stack exchange,提问作者Prilaga

