You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native集成CodePush Android构建报错:Duplicate Resources求助

问题成因
  1. CodePush Android插件会自动通过Gradle生成gradleResValues.xml文件,并将配置的DeploymentKey写入为资源项
  2. 你同时在strings.xml中手动添加了同名的CodePushDeploymentKey资源,导致打包阶段资源合并时冲突
  3. 删除strings.xml中的条目后出现R类不存在错误,通常是因为项目代码里仍在直接引用R.string.CodePushDeploymentKey,但Gradle自动生成的资源不会被包含在默认的R类引用路径里,或者构建缓存未清理导致R类未重新生成
安全修复方案

1. 移除重复资源并修正代码引用

  • 彻底删除strings.xml中所有包含CodePushDeploymentKey的条目
  • 遍历项目中所有引用该资源的代码(比如Java/Kotlin文件、React Native原生模块调用),将R.string.CodePushDeploymentKey替换为BuildConfig.CODEPUSH_DEPLOYMENT_KEY——CodePush插件会自动在BuildConfig中生成这个常量,无需手动维护
  • 如果必须保留资源引用方式,可确认Gradle生成的资源命名(通常和手动配置的一致),但更推荐用BuildConfig,避免资源冲突风险

2. 清理构建缓存

  • 执行Gradle清理命令:
    ./gradlew clean  # macOS/Linux
    gradlew clean    # Windows
    
  • 清除React Native缓存:
    npx react-native clean
    
  • 若使用Android Studio,重启IDE并同步Gradle文件,避免缓存残留

3. 验证CodePush Gradle配置

打开android/app/build.gradle,确认CodePush配置仅通过Gradle插件注入,示例配置如下:

apply plugin: 'com.microsoft.codepush'

codepush {
    deploymentKey = "你的部署密钥"
    // 其他可选配置:比如targetBinaryVersion等
}

确保没有在AndroidManifest.xml中手动添加如下meta-data项,避免重复注入:

<meta-data android:name="CodePushDeploymentKey" android:value="你的密钥" />

4. 验证修复效果

执行Release打包命令测试:

./gradlew assembleRelease

若仍有问题,可查看build/generated/res/gradleResValues/release/values/gradleResValues.xml文件,确认其中仅存在一个CodePushDeploymentKey资源项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:04:50