Ionic3执行ionic cordova run android时出现重复包名错误
解决Ionic Cordova Android构建时的
com.google.android.gms.license包冲突问题 这个问题我之前维护Ionic 3项目时也踩过坑!本质是你的项目里多个Cordova插件依赖了不同版本的Google Play Services库,导致com.google.android.gms.license这个包被重复引入,触发构建报错。结合你的环境(Ionic 3.20.0、Cordova Android 6.3.0),给你几个实测有效的解决办法:
1. 全局统一Google Play Services版本
这是最常用的根治方法,强制所有插件使用同一个兼容版本:
- 在项目根目录的
build.gradle文件中添加全局版本配置(如果没有这个文件就新建一个):ext { googlePlayServicesVersion = "11.8.0" // 这个版本适配Cordova Android 6.3.0,别选太高的 } - 打开
platforms/android/build.gradle,找到所有引用com.google.android.gms的依赖行,把版本号替换成全局变量,比如将:
改成:compile 'com.google.android.gms:play-services-maps:+'compile "com.google.android.gms:play-services-maps:${googlePlayServicesVersion}"
2. 排查并处理冲突插件
先看看哪些插件在搞事情:
- 运行命令列出所有已安装插件:
cordova plugin list - 重点排查依赖Google服务的插件,比如
cordova-plugin-googlemaps、cordova-plugin-firebase、cordova-plugin-admob这类。如果有功能重复的插件,直接移除一个;如果是版本太老,更新到兼容的最新版。
3. 安装插件时指定依赖版本
部分插件支持通过安装变量强制指定依赖版本,比如重新安装Firebase插件:
cordova plugin remove cordova-plugin-firebase cordova plugin add cordova-plugin-firebase --variable ANDROID_FIREBASE_VERSION="11.8.0"
具体变量名要看对应插件的官方文档。
4. 清理缓存重建平台
有时候旧平台的缓存会残留冲突文件,彻底清理后重建:
ionic cordova platform remove android ionic cordova platform add android@6.3.0 ionic cordova clean android ionic cordova run android
注意:因为你用的是Cordova Android 6.3.0,Google Play Services版本别选12以上的,大概率会兼容报错,11.8.0是经过验证的稳妥版本。
内容的提问来源于stack exchange,提问作者sf_2018
相关产品推荐
相关产品推荐

