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

使用Expo EAS Build构建Android应用时执行gradlew崩溃求助

解决Expo EAS Build SDK47 Android构建中CodePush DeploymentKey找不到的问题

你在使用Expo SDK47 + EAS Build构建React Native Android应用时,run gradlew环节出现编译错误,核心问题是找不到CodePushDeploymentKey符号,错误片段如下:

[stderr] /home/expo/workingdir/build/android/app/build/generated/rncli/src/main/java/com/facebook/react/PackageList.java:84: error: cannot find symbol
[stderr] new CodePush(getResources().getString(com.myapp.com.myapp.R.string.CodePushDeploymentKey), getApplicationContext(), com.myapp.com.myapp.BuildConfig.DEBUG),
[stderr] ^
[stderr] symbol: variable CodePushDeploymentKey
[stderr] location: class string

以下是针对性的解决建议:

  • 检查资源文件中的密钥定义
    打开Android项目的res/values/strings.xml,确认存在CodePushDeploymentKey的正确定义,格式如下:

    <string name="CodePushDeploymentKey">你的CodePush部署密钥</string>
    

    注意名称大小写、拼写必须完全匹配,不能有多余空格或符号。

  • 修复重复的包名引用
    错误日志里出现com.myapp.com.myapp.R.string,明显是包名重复。检查android/app/build.gradle中的applicationId配置,确保值为正确的单级包名(比如com.myapp),生成的PackageList.java中引用应该是com.myapp.R.string.CodePushDeploymentKey。

  • 验证EAS Build的环境变量配置
    如果通过环境变量注入密钥,确保eas.json的build profile中正确配置了环境变量:

    "build": {
      "production": {
        "env": {
          "CODEPUSH_DEPLOYMENT_KEY": "你的生产环境部署密钥"
        }
      }
    }
    

    同时要保证项目中存在对应的变量替换逻辑,比如gradle脚本或资源文件占位符能正确获取该环境变量。

  • 清理构建缓存后重试
    执行构建时添加清理缓存参数,避免旧的生成文件干扰:

    eas build --platform android --clear-cache
    

    也可以手动删除本地android/app/build目录后再触发远程构建。

  • 确认CodePush依赖版本兼容性
    检查package.json中的react-native-code-push版本,确保与Expo SDK47兼容。SDK47推荐使用^7.0.0系列版本,版本不匹配可能导致资源生成异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:45:33