React Native Firebase Crashlytics安卓崩溃未上报且build id缺失
环境说明
- React native版本:0.59
- react-native-firebase版本:^5.5.0
故障排查&解决方案
针对报错 Crashlytics build id is missing 导致的安卓端崩溃日志无法上报问题,按以下顺序排查:
1. 修正Gradle插件引入顺序
android/app/build.gradle 顶部的插件引入顺序必须严格遵循以下规则,顺序错误会直接导致build id生成失败:
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' apply plugin: 'io.fabric'
2. 补全根目录Gradle依赖
检查android/build.gradle的buildscript配置,确保添加了Fabric的maven仓库和插件依赖:
buildscript { repositories { google() jcenter() // 必须添加Fabric的maven源 maven { url 'https://maven.fabric.io/public' } } dependencies { // 保留原有安卓gradle插件、google服务插件配置 classpath 'com.android.tools.build:gradle:你当前使用的版本号' classpath 'com.google.gms:google-services:4.2.0' // 必须添加Fabric工具类路径 classpath 'io.fabric.tools:gradle:1.31.2' } }
3. 补充RN 0.59版本特有配置
在android/app/build.gradle的defaultConfig节点添加ndk过滤和build id注入配置:
defaultConfig { // 保留原有应用ID、版本号等配置不变 ndk { abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" } manifestPlaceholders = [ "io.fabric.ApiKey": "你项目的Fabric API密钥" ] }
4. 原生初始化配置
RN 0.59版本不会自动初始化Crashlytics,需要在MainApplication.java的onCreate方法中手动添加初始化代码:
import com.crashlytics.android.Crashlytics; import io.fabric.sdk.android.Fabric; @Override public void onCreate() { super.onCreate(); Fabric.with(this, new Crashlytics()); }
5. 清理缓存重新构建
构建缓存会导致资源文件丢失,按顺序执行以下命令重新打包:
cd android ./gradlew clean cd .. rm -rf node_modules npm install # 测试上报必须打release包,debug包的RN红屏异常不会触发原生崩溃上报 react-native run-android --variant=release
6. 验证上报逻辑
手动调用崩溃方法测试上报,不要使用debug模式下的RN红屏报错:
// 可在原生按钮点击事件中添加该代码触发崩溃 Crashlytics.getInstance().crash();
内容的提问来源于stack exchange,提问作者Anand Prakash
相关产品推荐
相关产品推荐

