执行ionic cordova build android遇多com.google.android.gms.license库冲突复现求解
解决Ionic Cordova构建Android时的com.google.android.gms.license包冲突问题
兄弟,我太懂这种删了又自动冒出来的依赖冲突有多闹心了!你遇到的这个Error: more than one library with package name com.google.android.gms.license,本质是多个Cordova插件偷偷引入了重复或版本不一致的Google Play服务相关依赖,手动删除后构建流程又会自动把依赖加回来,给你几个实用的解决办法:
统一全局Google Play服务依赖版本
这是最省心的方案,直接在项目根目录的build.gradle(不是app模块下的那个)里添加全局版本强制规则,让所有插件都用同一个版本的gms库:allprojects { repositories { google() jcenter() } // 新增这段全局依赖控制 configurations.all { resolutionStrategy { // 根据你实际用到的gms组件调整版本号,这里举个例子 force 'com.google.android.gms:play-services-base:17.6.0' force 'com.google.android.gms:play-services-maps:17.0.1' force 'com.google.android.gms:play-services-ads:19.8.0' // license包是附属在这些核心gms包下的,统一核心版本就能解决重复问题 } } }这样不管哪个插件想引入其他版本的gms库,都会被强制替换成你指定的版本,从根源上杜绝重复包。
检查并更新冲突的Cordova插件
先执行cordova plugin list看看已安装的插件,重点排查和Google服务相关的插件(比如地图、推送类插件),这些插件很可能是冲突的源头:- 优先把这些插件更新到最新版本,新版本通常会修复依赖声明的问题;
- 如果更新后还是不行,可以找到插件目录下的
plugin.xml,修改它的<framework>依赖声明,给gms库加上明确的版本号,或者直接排除重复的license模块(不过这种方法每次插件更新后要重新改,不如全局控制方便)。
彻底清理构建缓存
有时候旧缓存会残留冲突的依赖,执行以下命令清理干净:ionic cordova clean android rm -rf platforms/android/.gradle rm -rf ~/.gradle/caches清理完再重新执行
ionic cordova build android试试。用专用插件统一版本
如果上面的方法都嫌麻烦,可以试试cordova-android-play-services-gradle-release这个专门解决此类问题的插件,安装时指定你要的gms版本:cordova plugin add cordova-android-play-services-gradle-release --variable PLAY_SERVICES_VERSION=17.6.0
内容的提问来源于stack exchange,提问作者Twisted reality
相关产品推荐
相关产品推荐

