Ionic 4安卓构建报错:com.google.android.gms:play-services-base依赖版本冲突
这是典型的Android依赖版本冲突问题,我维护Ionic项目时也碰见过一模一样的情况,给你拆解下原因和可行的解决办法:
问题根源
你的项目里肯定有多个Cordova/Ionic插件(比如地图、推送、定位类插件),它们各自依赖了不同版本的com.google.android.gms:play-services-base库。Gradle构建时会自动选择最高版本的依赖(这里是16.0.1),但部分旧插件的代码只适配低版本(11.0.4),就会触发版本不兼容的报错。
重新生成platform文件夹没用,是因为插件的依赖配置会被自动同步到新生成的平台文件里,冲突的根源没被解决。
解决步骤
1. 定位冲突来源
先按照提示执行命令,查看完整的依赖树:
./gradlew :app:dependencies
在输出结果里搜索com.google.android.gms:play-services-base,就能找到所有依赖这个库的插件,标记出那些指定了11.0.4版本的插件——这就是冲突的源头。
2. 统一依赖版本(两种可选方式)
方式一:通过Config.xml强制统一(推荐)
在项目根目录的config.xml中添加以下配置,强制指定Google Play Services相关库的版本(这里选冲突的低版本11.0.4,或者如果插件兼容的话也可以选16.0.1,建议先试11.0.4):
<platform name="android"> <!-- 确保targetSdkVersion是兼容的版本 --> <preference name="android-targetSdkVersion" value="33" /> <!-- 强制统一Google Play Services核心库版本 --> <preference name="GradlePluginGooglePlayServicesVersion" value="11.0.4" /> <!-- 如果涉及定位类插件,补充这个配置 --> <preference name="GradlePluginGooglePlayServicesLocationVersion" value="11.0.4" /> </platform>
然后重新同步安卓平台:
ionic cordova platform remove android ionic cordova platform add android
方式二:直接修改Gradle配置
如果方式一无效,可以直接修改安卓平台的Gradle文件。找到platforms/android/build.gradle,在allprojects代码块中添加版本强制解析规则:
allprojects { repositories { // 保留原有的仓库配置,比如google()、jcenter()等 } // 添加版本强制统一规则 configurations.all { resolutionStrategy.force 'com.google.android.gms:play-services-base:11.0.4' // 如果还有其他冲突的Play Services库(比如maps、auth),也一起添加 // resolutionStrategy.force 'com.google.android.gms:play-services-maps:11.0.4' } }
⚠️ 注意:这种方式每次重新生成platform文件夹后会被覆盖,建议配合Config.xml的钩子脚本,或者优先用方式一。
3. 更新冲突插件
如果定位到是某个旧版本插件导致的冲突,直接更新该插件到最新版本,新版本通常会适配更高版本的Play Services库:
ionic cordova plugin update 冲突插件的名称
比如如果是地图插件冲突,就执行ionic cordova plugin update cordova-plugin-googlemaps
4. 清理无用插件
有些已经不再使用的插件也会引入冗余依赖,先列出所有插件:
ionic cordova plugin list
移除那些没用的插件:
ionic cordova plugin remove 插件名称
内容的提问来源于stack exchange,提问作者VenomBerry

