You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动