You need to enable JavaScript to run this app. 如何解决Flutter集成Google服务的Duplicate resources报错
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Flutter集成Google服务的Duplicate resources报错

问题核心根因

触发这个合并失败的逻辑非常明确:
Android端集成Google服务必加的com.google.gms.google-services Gradle插件,会在每次构建流程中自动读取app模块下的google-services.json配置文件,从中提取OAuth Web客户端对应的ID,自动生成string/default_web_client_id资源到构建产物的生成目录下。而你此前照教程手动在自定义的app/src/main/res/values/strings.xml中,也定义了完全同名的字符串资源,资源合并阶段检测到两个同key的资源,就会直接中断构建抛出重复资源错误。

注意:build目录下自动生成的values.xml属于临时构建产物,每次构建都会全量重新生成,完全不要尝试修改这个文件来解决问题,所有重复的自定义资源一定来自源码目录下你手动维护的文件。

分步解决操作
  • 首先打开报错提示中标注的自定义文件app/src/main/res/values/strings.xml,在文件内搜索default_web_client_id,把对应的整行字符串条目直接删除。这是解决该问题的核心操作——目前版本的google-services插件已经可以自动解析所有需要的配置ID,完全不需要手动在strings.xml中写这行定义,绝大多数这类报错都是早年旧教程要求手动配置的历史遗留问题。
  • 全局检索项目源码目录(跳过build生成目录)下所有res文件夹内的xml文件,确认没有其他位置额外定义default_web_client_id字符串资源,全部清理干净。
  • 在项目根目录执行flutter clean,清除项目残留的旧构建缓存,避免之前缓存的重复资源没有被完全覆盖。
  • 重新执行flutter run触发构建,即可正常完成资源合并流程。
常见避坑提示
  • 确认放在app模块根目录的google-services.json和当前应用的包名完全匹配,没有误放其他项目、其他应用的配置文件,否则即使解决了重复资源问题,后续调用Google登录、Google服务时也会出现鉴权失败的问题。
  • 不要在自定义的strings.xml里手动定义任何google-services插件会自动生成的字符串资源(包括google_api_key、google_app_id、gcm_defaultSenderId这类),否则后续升级插件版本后还会反复出现重复资源报错。

内容的提问来源于stack exchange,提问作者Catherine Riesner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 12:36:03