使用NativeScript构建Android项目时出现重复GMS License库错误
解决NativeScript Android构建时的
com.google.android.gms.license多包冲突问题 你遇到的这个错误,本质是两个推送类插件依赖的Google Play服务版本不统一导致的——nativescript-onesignal和nativescript-push-notifications都依赖了Google Play服务的相关模块,加上你App.gradle里用了+号自动拉取最新版本,Gradle解析时就会拉取多个版本的license库,引发冲突。下面是具体的解决步骤:
1. 统一Google Play服务版本号
首先要把所有Google Play服务相关依赖的版本固定下来,避免+号带来的版本差异:
打开项目根目录的App.gradle,先在buildscript块里定义统一的版本变量,再替换所有依赖里的+号:
buildscript { ext { // 选一个兼容你现有插件的稳定版本,17.0.0适配多数旧版NativeScript插件 googlePlayServicesVersion = "17.0.0" } // 保留你原有的buildscript内容 } dependencies { compile 'com.onesignal:OneSignal:3.+@aar' // 用统一版本替换之前的+号 compile "com.google.android.gms:play-services-gcm:${googlePlayServicesVersion}" compile "com.google.android.gms:play-services-location:${googlePlayServicesVersion}" // 保留你原有的其他依赖 }
2. 移除功能重叠的推送插件(推荐)
你同时引入了两个推送插件,功能完全重叠,这是冲突的根源之一。建议只保留一个:
- 如果用OneSignal:卸载原生推送插件
之后记得从tns plugin remove nativescript-push-notificationsApp.gradle里移除play-services-gcm相关依赖(OneSignal已经内置了必要的推送依赖)。 - 如果用原生推送:卸载OneSignal插件
tns plugin remove nativescript-onesignal
3. 清理缓存后重新构建
修改配置后,清理NativeScript和Gradle的缓存,避免旧依赖残留:
tns platform remove android tns platform add android tns clean tns build android
额外提醒
你的tns-android版本是3.3.1,属于比较老旧的版本,要确保所选插件版本和它兼容——比如nativescript-onesignal@1.0.7是否适配这个NativeScript版本,建议查看插件的说明文档确认。
内容的提问来源于stack exchange,提问作者Priyanga Manivelan
相关产品推荐
相关产品推荐

