Ionic v3添加cordova-plugin-firebase出现google_app_id资源重复报错如何解决
解决方案
1. 禁止cordova-plugin-firebase自动写入重复资源
你推测的冲突原因完全正确:cordova-plugin-firebase@0.1.24默认会主动将google_app_id、google_api_key写入strings.xml,同时google-services插件会读取google-services.json自动生成同名资源,最终导致重复报错。
找到项目根目录下的plugins/cordova-plugin-firebase/plugin.xml,搜索到以下配置段,删掉两个字符串的注入逻辑即可:
<config-file parent="/resources" target="res/values/strings.xml"> <!-- 删掉下面两行 --> <string name="google_app_id">@string/google_app_id</string> <string name="google_api_key">@string/google_api_key</string> </config-file>
注意:如果需要永久生效,避免后续重新安装插件时配置被覆盖,可以把修改后的插件存到项目本地目录,用cordova plugin add 本地插件路径 --save的方式安装,或者写cordova钩子自动修改plugin.xml
2. 清理已生成的冗余资源
执行以下命令清理旧构建产物,让修改后的配置生效:
# 删除已生成的安卓平台 ionic cordova platform rm android # 清理插件缓存 rm -rf plugins/cordova-plugin-firebase # 重新添加安卓平台 ionic cordova platform add android <你的安卓平台版本号> # 测试构建 ionic cordova build android
如果不想重新加平台,也可以直接打开platforms/android/app/src/main/res/values/strings.xml,手动删除里面的google_app_id和google_api_key两个条目,即可临时解决问题。
3. 修正gradle依赖错误
你当前的build.gradle依赖存在两处错误,需要同步调整:
- 移除重复依赖:dependencies中两次声明了
com.google.firebase:firebase-messaging,删掉版本号为+的条目即可,避免版本冲突 - 调整google-services位置:
com.google.gms:google-services:+是gradle插件,不应该放在app模块的dependencies下,需要移到项目根build.gradle的dependencies -> classpath节点下,同时在app模块build.gradle的最底部添加apply plugin: 'com.google.gms.google-services',确保插件正常读取配置生成资源。
如果修改后仍然报错,可以在app模块build.gradle的android节点下添加资源去重配置,强制跳过冲突:
android { // 原有配置保留 aaptOptions { additionalParameters "--auto-add-overlay" } }
内容的提问来源于stack exchange,提问作者meth
相关产品推荐
相关产品推荐

