React Native安卓端启动即崩溃,报Firebase Blocking Thread #0致命异常
React Native安卓端启动即崩溃,报Firebase Blocking Thread #0致命异常
兄弟,我维护老项目时也碰到过一模一样的问题!iOS跑起来完全正常,安卓一启动就直接崩,看日志全是Firebase相关的报错,这基本就是Firebase和Google Play Services组件版本不匹配搞的鬼——毕竟老项目多人维护,很容易出现依赖版本乱飘的情况。给你几个亲测有效的解决步骤:
1. 统一Firebase相关依赖版本
先在android/build.gradle里用全局变量把所有Firebase和Google Play Services的版本统一管理,避免各个依赖用不同版本:
buildscript { ext { // 选一个和你RN版本兼容的稳定版本,比如29.x系列 firebase_version = "29.0.0" play_services_version = "17.0.0" } // ...保留原有其他配置 }
然后在android/app/build.gradle里所有涉及Firebase和Google Play Services的依赖都用这个变量,比如:
implementation "com.google.firebase:firebase-installations:$firebase_version" implementation "com.google.android.gms:play-services-tasks:$play_services_version"
2. 清理安卓构建缓存并刷新依赖
缓存经常会搞事情,先把旧缓存清干净再重新构建:
cd android ./gradlew clean ./gradlew build --refresh-dependencies
之后回到项目根目录重新运行安卓项目即可。
3. 排查并解决依赖冲突
如果统一版本后还是有问题,就查看依赖树找冲突的组件:
cd android ./gradlew app:dependencies
找一下有没有不同版本的play-services-tasks或者firebase-installations,如果有的话,在对应的依赖里把旧版本排除掉,比如:
implementation('某个第三方依赖') { exclude group: 'com.google.android.gms', module: 'play-services-tasks' }
4. 检查ProGuard配置(如果开启了混淆)
要是你的项目开了ProGuard,有可能是它把Firebase的关键类混淆掉了,在android/app/proguard-rules.pro里加上这两条规则:
-keep class com.google.android.gms.common.internal.Preconditions { *; } -keep class com.google.android.gms.tasks.Tasks { *; }
一般来说,按上面这几步走,版本冲突的问题就能解决了,毕竟老项目最容易栽在依赖版本不一致上。
备注:内容来源于stack exchange,提问作者Vlad
相关产品推荐
相关产品推荐

