安装@react-native-firebase/app后React Native应用构建失败求助
React Native 0.70.0 集成 @react-native-firebase/app ^18.0.0 构建失败排查与解决
问题背景
在React Native 0.70.0项目中安装@react-native-firebase/app(版本^18.0.0)后,Android构建失败,提示类重复冲突错误。
相关配置信息
package.json 依赖
"@react-native-firebase/app": "^18.0.0", "react-native": "0.70.0"
build.gradle 依赖项
implementation project(':react-native-pusher-push-notifications') implementation 'com.pusher:push-notifications-android:1.9.0' implementation ("com.google.firebase:firebase-iid:21.1.0") implementation ("com.google.firebase:firebase-messaging:23.0.0") implementation 'androidx.multidex:multidex:2.0.1'
构建错误日志
* What went wrong: Execution failed for task ':app:checkDebugDuplicateClasses'. > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable > Duplicate class com.google.android.gms.internal.measurement.zzdu found in modules jetified-firebase-analytics-impl-16.1.1-runtime (com.google.firebase:firebase-analytics-impl:16.1.1) and jetified-play-services-measurement-sdk-api-21.3.0-runtime (com.google.android.gms:play-services-measurement-sdk-api:21.3.0) Duplicate class com.google.android.gms.internal.measurement.zzdv found in modules jetified-firebase-analytics-impl-16.1.1-runtime (com.google.firebase:firebase-analytics-impl:16.1.1) and jetified-play-services-measurement-sdk-api-21.3.0-runtime (com.google.android.gms:play-services-measurement-sdk-api:21.3.0) Duplicate class com.google.android.gms.internal.measurement.zzdw found in modules jetified-firebase-analytics-impl-16.1.1-runtime (com.google.firebase:firebase-analytics-impl:16.1.1) and jetified-play-services-measurement-sdk-api-21.3.0-runtime (com.google.android.gms:play-services-measurement-sdk-api:21.3.0) Duplicate class com.google.android.gms.internal.measurement.zzdx found in modules jetified-firebase-analytics-impl-16.1.1-runtime (com.google.firebase:firebase-analytics-impl:16.1.1) and jetified-play-services-measurement-sdk-api-21.3.0-runtime (com.google.android.gms:play-services-measurement-sdk-api:21.3.0) Duplicate class com.google.android.gms.internal.measurement.zzdy found in modules jetified-firebase-analytics-impl-16.1.1-runtime (com.google.firebase:firebase-analytics-impl:16.1.1) and jetified-play-services-measurement-sdk-api-21.3.0-runtime (com.google.android.gms:play-services-measurement-sdk-api:21.3.0) Duplicate class com.google.android.gms.internal.measurement.zzdz found in modules jetified-firebase-analytics-impl-16.1.1-runtime (com.google.firebase:firebase-analytics-impl:16.1.1) and jetified-play-services-measurement-sdk-api-21.3.0-runtime (com.google.android.gms:play-services-measurement-sdk-api:21.3.0) Duplicate class com.google.android.gms.internal.measurement.zzea found in modules jetified-firebase-analytics-impl-16.1.1-runtime (com.google.firebase:firebase-analytics-impl:16.1.1) and jetified-play-services-measurement-sdk-api-21.3.0-runtime (com.google.android.gms:play-services-measurement-sdk-api:21.3.0) Duplicate class com.google.android.gms.internal.measurement.zzeb found in modules jetified-firebase-analytics-impl-16.1.1-runtime (com.google.firebase:firebase-analytics-impl:16.1.1) and jetified-play-services-measurement-sdk-api-21.3.0-runtime (com.google.android.gms:play-services-measurement-sdk-api:21.3.0)
原因分析
- 依赖版本冲突:
@react-native-firebase/app18.x版本依赖的Firebase库版本较高,而手动添加的firebase-iid:21.1.0、firebase-messaging:23.0.0版本过低;同时react-native-pusher-push-notifications依赖拉取了旧版本的firebase-analytics-impl:16.1.1,与新版play-services-measurement-sdk-api:21.3.0产生类重复。 - 手动依赖冗余:
@react-native-firebase/app已自动引入所需Firebase核心依赖,手动添加firebase-iid和firebase-messaging属于冗余操作,反而引发版本不匹配。
解决方案
1. 移除冗余的手动Firebase依赖
修改build.gradle,删除以下两行:
implementation ("com.google.firebase:firebase-iid:21.1.0") implementation ("com.google.firebase:firebase-messaging:23.0.0")
若需使用推送功能,直接安装@react-native-firebase/messaging包即可,它会自动匹配对应Firebase依赖版本。
2. 统一Firebase依赖版本(使用Firebase BOM)
在项目根目录build.gradle中添加Firebase BOM,确保所有Firebase依赖版本一致:
buildscript { dependencies { classpath 'com.google.gms:google-services:4.3.15' classpath 'com.google.firebase:firebase-bom:32.2.0' // 适配RN Firebase 18.x的版本 } }
在app模块build.gradle中通过BOM引入依赖:
dependencies { implementation platform('com.google.firebase:firebase-bom:32.2.0') implementation 'com.google.firebase:firebase-messaging' // 其他保留依赖... }
3. 排除Pusher依赖中的旧Firebase模块
若升级Pusher依赖后仍有冲突,在build.gradle中排除旧Firebase分析模块:
implementation project(':react-native-pusher-push-notifications') { exclude group: 'com.google.firebase', module: 'firebase-analytics-impl' } implementation 'com.pusher:push-notifications-android:1.9.0' { exclude group: 'com.google.firebase', module: 'firebase-analytics-impl' }
4. 清理缓存并重新构建
执行命令清理gradle缓存,避免旧依赖残留:
./gradlew clean cd android && ./gradlew clean && cd .. npx react-native run-android
内容的提问来源于stack exchange,提问作者Firas Abu Fares
相关产品推荐
相关产品推荐

