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

使用EAS Build构建Expo项目时iOS和Android均报错求助

Expo EAS Build 双平台构建失败问题排查与解决

问题背景

使用EAS Build构建Expo React Native裸工程(bare workflow)时,双平台均构建失败:

  • iOS报错:spawn pod ENOENT
  • Android报错:ENOENT: no such file or directory, open '/home/expo/workingdir/build/android/gradlew'

本地项目的ios、android目录文件完整,已执行expo prebuild、清理iOS Pods、修改Podfile,尝试过云构建和本地构建,问题仍未解决。环境信息:EAS CLI v15.0.15,Expo ~52.0.38。


疑问解答与解决方案

1. 本地已安装CocoaPods 1.16.2,为何iOS仍报该错误?

EAS Build在云端独立容器中执行构建,本地的CocoaPods环境完全不影响云端。报错原因通常是云端容器未正确初始化Pod环境,或构建配置中缺少Pod安装步骤。

  • 解决:在eas.json的iOS构建配置中添加prebuildCommand,确保云端执行预构建后自动安装Pods:
    "ios": {
      "prebuildCommand": "expo prebuild --clean && cd ios && pod install"
    }
    
    也可在package.json的scripts中添加"pod-install": "cd ios && pod install",并在eas配置中调用该脚本。

2. Android目录存在gradlew,为何EAS Build无法找到?

核心原因是gradlew及相关gradle文件未被git追踪,导致上传到云端时缺失。

  • 解决:
    1. 检查.gitignore文件,确保未排除android/gradlew、android/gradlew.bat、android/gradle/目录;
    2. 执行命令将文件加入git:
      git add android/gradlew android/gradlew.bat android/gradle/
      git commit -m "Add gradle wrapper files"
      
    3. 若仍无效,删除android目录后重新执行expo prebuild --clean,提交后再触发构建。

3. EAS CLI版本与eas.json配置是否存在版本不匹配?

EAS CLI v15与Expo SDK 52版本兼容,但部分eas.json中的旧字段可能已被废弃,导致构建异常。

  • 解决:
    1. 检查eas.json中是否使用了已废弃的配置字段(如旧版env格式);
    2. 执行eas build:configure命令,重新生成适配当前CLI版本的eas.json配置,覆盖原有配置后测试。

4. bare workflow项目是否需要特定的eas.json配置?

是的,裸工程依赖原生目录配置,eas.json需明确指定预构建和构建步骤,确保云端生成正确的原生环境。

  • 示例适配SDK 52的eas.json配置:
    {
      "build": {
        "production": {
          "android": {
            "buildType": "app-bundle",
            "prebuildCommand": "expo prebuild --clean"
          },
          "ios": {
            "buildType": "archive",
            "prebuildCommand": "expo prebuild --clean && cd ios && pod install"
          },
          "env": {
            "EXPO_PUBLIC_API_URL": "https://api.example.com"
          }
        }
      }
    }
    
    重点:必须包含prebuildCommand确保云端生成正确的原生目录;Android需保证gradlew可执行,iOS需确保Pod依赖安装完成。

5. 是否是构建上传时的权限或文件结构问题?

  • 权限问题:gradlew需要可执行权限,本地执行chmod +x android/gradlew后提交git,云端容器会保留该权限;iOS的Podfile若权限不足也可能导致无法执行pod命令,可执行chmod 644 ios/Podfile后提交。
  • 文件结构问题:确保项目根目录结构正确,未移动过ios/android目录;检查app.json/expo.json中ios.bundleIdentifier和android.package与原生目录中的配置一致;确认.gitignore未排除原生目录的必要文件(如android/app/src/main/、ios/Podfile.lock等)。

内容的提问来源于stack exchange,提问作者Batuhan Özkaner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:04:57