React Native编译冲突:存在多个com.google.android.gms.license同名包
解决GMS 12.0.0与OneSignal的依赖版本冲突问题
我之前处理过不少类似的GMS版本冲突问题,尤其是OneSignal这类依赖Google服务的第三方SDK,结合你的情况,给你几个经过验证的解决方案:
1. 先确认OneSignal的兼容版本
核心问题之一可能是你当前用的OneSignal版本不支持GMS 12.0.0。OneSignal会定期更新SDK适配最新GMS版本,建议直接指定适配12.0.0+的稳定版,比如在app/build.gradle中修改:
dependencies { implementation 'com.onesignal:OneSignal:3.15.3' // 该版本已适配GMS 12.0.0,可按需更新到最新稳定版 }
2. 全局统一管理GMS依赖版本
只强制单个模块的版本往往不够,建议在项目根目录的build.gradle中定义全局版本变量,确保所有GMS/Firebase依赖用同一版本:
buildscript { ext { gms_version = "12.0.0" onesignal_version = "3.15.3" } repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.2.2' classpath "com.google.gms:google-services:4.3.10" // 该版本与GMS 12.0.0兼容 } }
然后在app/build.gradle中统一引用这些变量:
dependencies { implementation "com.google.android.gms:play-services-auth:$gms_version" implementation "com.google.android.gms:play-services-location:$gms_version" // OneSignal核心依赖模块 implementation "com.onesignal:OneSignal:$onesignal_version" }
3. 完整覆盖冲突依赖的Resolution Strategy
如果仍有版本冲突,需要扩展resolutionStrategy,强制所有OneSignal依赖的GMS模块都用统一版本,不要只限定auth:
configurations.all { resolutionStrategy { // 强制所有相关GMS模块使用指定版本 force "com.google.android.gms:play-services-auth:$gms_version" force "com.google.android.gms:play-services-location:$gms_version" force "com.google.android.gms:play-services-gcm:$gms_version" // 旧版OneSignal可能依赖GCM force "com.google.firebase:firebase-messaging:$gms_version" // 若用到Firebase推送需同步版本 } }
4. 清理缓存后重新编译
Gradle缓存可能导致依赖版本不更新,执行以下命令彻底清理后再编译:
./gradlew clean build --refresh-dependencies
验证依赖树
可以通过以下命令查看项目依赖树,确认所有GMS版本是否统一:
./gradlew app:dependencies
搜索com.google.android.gms相关条目,确保没有同时出现11.8.0和12.0.0的版本。
内容的提问来源于stack exchange,提问作者Jigar




