添加React Native Firebase后安卓应用启动崩溃求助
嘿,我之前也碰到过老版本RN加Firebase启动崩溃的问题,结合你的配置(RN 0.51、gradle 2.2.3/2.14.1)来看,大概率是几个常见的坑导致的,咱们一步步排查解决:
1. 版本不兼容:选对适配RN 0.51的Firebase版本
RN 0.51是2017年底的老版本,新的react-native-firebase完全不兼容它。你得安装专门适配这个RN版本的旧版Firebase插件,比如react-native-firebase@4.x.x系列(官方文档里这个版本是支持RN 0.40-0.57的)。
安装时指定版本:
npm install react-native-firebase@4.3.8 --save # 或者用yarn:yarn add react-native-firebase@4.3.8
2. Gradle依赖冲突:统一Android Support库版本
你的配置里已经排除了react-native-camera的Support依赖,还加了exifinterface:26.1.0,但Firebase会自动引入自己的Support库,很容易和你现有版本冲突,导致崩溃。
解决办法是在app/build.gradle里添加强制统一Support版本的配置:
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '26.1.0' } } } }
3. Firebase初始化配置遗漏
很多时候崩溃是因为没完成Firebase的基础配置,记得检查这几点:
- 把Firebase控制台下载的
google-services.json放到android/app目录下 - 在项目根目录的
build.gradle中添加google-services插件的classpath:
buildscript { dependencies { // 适配gradle 2.2.3的版本是3.0.0,别用太高的 classpath 'com.google.gms:google-services:3.0.0' } }
- 在
app/build.gradle的最后一行添加插件应用:
apply plugin: 'com.google.gms.google-services'
4. 开启MultiDex解决方法数溢出
RN 0.51加上Firebase后,方法数很容易超过65536的上限,导致DEX溢出崩溃。必须开启MultiDex:
- 在
app/build.gradle的defaultConfig里添加:
defaultConfig { // ...你的其他配置 multiDexEnabled true }
- 添加MultiDex依赖:
dependencies { // ...你的其他依赖 compile 'com.android.support:multidex:1.0.3' }
- 如果没有自定义Application类,就在
AndroidManifest.xml的application标签里加:
android:name="android.support.multidex.MultiDexApplication"
如果有自定义Application,让它继承MultiDexApplication而非原生的Application。
5. 查看Logcat定位具体问题
如果上面的步骤都试了还是崩溃,一定要打开Android Studio的Logcat,搜索AndroidRuntime找到崩溃的具体栈信息。比如java.lang.NoClassDefFoundError一般是依赖缺失或版本冲突,java.lang.IllegalStateException可能是初始化顺序问题,根据日志能更快定位根源。
内容的提问来源于stack exchange,提问作者Ramesh Krishnan

