Ionic/Cordova集成FCM时processDebugGoogleServices任务执行失败求助
解决Ionic FCM插件Android构建的版本冲突与Dex重复问题
我来帮你搞定这个头疼的构建问题!你遇到的是Google Play Services/Firebase版本与google-services插件不兼容的典型问题,直接降级到9.0.0又触发了多Dex重复定义的坑,本质都是依赖版本不统一搞出来的麻烦。下面是一步步的解决方案:
第一步:统一所有Google服务与Firebase的版本号
别再用+号让系统自动匹配版本了,手动指定和你现有Play Services一致的版本(比如你原来用的11.0.4),确保所有Google系依赖版本完全统一:
- 修改
/platform/android/project.properties文件:target=android-26 android.library.reference.1=CordovaLib cordova.system.library.1=com.google.android.gms:play-services-base:11.0.4 cordova.system.library.2=com.google.android.gms:play-services-ads:11.0.4 cordova.system.library.3=com.google.firebase:firebase-core:11.0.4 cordova.system.library.4=com.google.firebase:firebase-messaging:11.0.4 cordova.gradle.include.1=cordova-plugin-fcm/bar-FCMPlugin.gradle cordova.gradle.include.2=phonegap-plugin-barcodescanner/bar-barcodescanner.gradle cordova.gradle.include.3=cordova-android-play-services-gradle-release/bar-cordova-android-play-services-gradle-release.gradle - 修改
/platform/android/build.gradle里的依赖块:dependencies { compile fileTree(dir: 'libs', include: '*.jar') // SUB-PROJECT DEPENDENCIES START debugCompile(project(path: "CordovaLib", configuration: "debug")) releaseCompile(project(path: "CordovaLib", configuration: "release")) compile "com.google.android.gms:play-services-base:11.0.4" compile "com.google.android.gms:play-services-ads:11.0.4" compile "com.google.firebase:firebase-core:11.0.4" compile "com.google.firebase:firebase-messaging:11.0.4" // SUB-PROJECT DEPENDENCIES END }
第二步:升级google-services插件版本
你的google-services插件版本太老,不支持11.x的Play Services版本,得把它升级到兼容的版本(比如3.1.2,这个版本完美适配11.x系列):
找到/platform/android/build.gradle里的buildscript部分,修改成这样:
buildscript { repositories { jcenter() maven { url "https://maven.google.com" } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' // 和你Cordova Android 6.3.0匹配的gradle版本,别乱改 classpath 'com.google.gms:google-services:3.1.2' // 升级到兼容11.x的google-services版本 } }
第三步:清理缓存重新构建
旧的构建缓存很容易搞事情,先清理干净再重新构建:
ionic cordova clean android ionic cordova build android
第四步:如果还遇到多Dex错误,开启多Dex支持
要是上面几步做完还是弹出Multiple dex files define的错误,那就是方法数超过了Android的限制,开启多Dex就能解决:
- 在
/platform/android/build.gradle的android节点里添加:android { defaultConfig { multiDexEnabled true } } - 同时在依赖块里加多Dex的依赖:
dependencies { // 保留原来的所有依赖... compile 'com.android.support:multidex:1.0.3' }
为啥这么解决?
- 你一开始的版本冲突,是因为用了
+号让Firebase自动拉取最新版本,而google-services插件要求所有Google服务和Firebase的版本必须完全一致,而且插件本身的版本要能兼容这个版本号。 - 直接降级到9.0.0之所以会触发多Dex问题,是因为你装的其他插件(比如条码扫描器)可能依赖了更高版本的Google服务,导致同一个类被多次打包,统一所有依赖的版本才是根治的办法。
内容的提问来源于stack exchange,提问作者user9168386
相关产品推荐
相关产品推荐

