This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

构建服务器基础设施

编辑页面

了解使用 EAS 时当前的构建服务器基础设施。


构建服务器 IP 地址

构建服务器的 IP 地址列表可在此文件中查看。我们预计该列表不会经常变更。该列表包含 “Last-Modified” 和 “Expires” 的 ISO 8601 时间戳,分别指定列表最后更新时间以及我们承诺在此时间之前不会更改列表的截止时间。

Linux 运行器托管在 Google Cloud Platform 上。macOS 运行器托管在我们自己的 macOS 云中。

配置构建环境

每个平台的镜像都包含一个特定版本的 Node.js、Yarn、CocoaPods、Xcode、Ruby、Fastlane 等。你可以在eas.json中覆盖其中部分版本。如果你要找的配置项不存在,你可以使用npm hooks通过 apt-getbrew 安装或更新任何系统依赖。请注意,这些自定义配置会在构建过程中应用,并且会增加构建耗时。

在选择构建镜像时,你可以使用下面提供的完整名称,或使用以下别名之一:autolatest,或者针对特定 SDK 的别名,例如 sdk-57

  • 使用特定名称可保证环境一致,仅会有少量更新。
  • 使用 auto 别名时,构建镜像将根据项目配置、Expo SDK 版本以及 React Native 版本来选择。你可以在构建日志的 启动构建环境 部分查看本次构建使用了哪个镜像。
  • latest 别名将指向软件版本最新的镜像。
  • sdk-57 别名将指向最适合 SDK 57 构建的镜像。
  • sdk-56 别名将指向最适合 SDK 56 构建的镜像。
  • sdk-55 别名将指向最适合 SDK 55 构建的镜像。
  • sdk-54 别名将指向最适合 SDK 54 构建的镜像。
  • sdk-53 别名将指向最适合 SDK 53 构建的镜像。
  • sdk-52 别名将指向最适合 SDK 52 构建的镜像。
  • SDK 别名会随着每个新 SDK 版本的发布而更新。
  • latest 别名会随着每个新镜像版本的发布而更新。

Android 构建服务器配置

Android 构建器运行在隔离环境中的虚拟机上。每次构建都会获得自己的专用 VM 实例。

  • 构建资源:

    • medium: 4 vCPUs, 16 GB RAM (n2-standard-4 or c3d-standard-4 (default) Google Cloud machine type, depending on the "New Android Builds Infrastructure" setting in project settings)
    • large: 8 vCPUs, 32 GB RAM (n2-standard-8 or c3d-standard-8 (default) Google Cloud machine type, depending on the "New Android Builds Infrastructure" setting in project settings)
  • npm 缓存已通过 Kubernetes 部署

  • Maven 缓存已通过 Kubernetes 部署

  • 构建环境预配时,会通过 GRADLE_OPTS 环境变量注入 Gradle JVM 参数。请参见下方的 Gradle JVM 参数

  • ~/.npmrc 中的全局 npm 配置:

    ~/.npmrc
    registry=http://npm.production.caches.eas-build.internal
  • ~/.yarnrc.yml 中的全局 Yarn 配置:

    ~/.yarnrc.yml
    unsafeHttpWhitelist: - '*' npmRegistryServer: 'http://npm.production.caches.eas-build.internal' enableImmutableInstalls: false

Gradle JVM 参数

EAS Build 会在 Gradle 运行前,将 GRADLE_OPTS 环境变量设置到构建 VM(worker)上。其值取决于你选择的资源类别

资源类别-Xmx(最大堆)
medium4g
large8g

除了 -Xmx 之外,worker 还会通过 -Dorg.gradle.jvmargs 向 Gradle 构建 JVM 传递以下 JVM 参数:

  • -XX:MaxMetaspaceSize=1g
  • -XX:+HeapDumpOnOutOfMemoryError
  • -Dfile.encoding=UTF-8

worker 还会通过 GRADLE_OPTS 设置这些顶层 Gradle 属性:

  • -Dorg.gradle.parallel=true
  • -Dorg.gradle.daemon=false

覆盖 GRADLE_OPTS

你可以在 eas.json 的构建配置文件 env 中、在工作流文件中,或通过 EAS 环境变量设置 GRADLE_OPTS,以替换 worker 的默认值。项目环境变量优先于 worker 的默认值。

Android 服务器镜像

ubuntu-26.04-jdk-17-ndk-r27b-sdk-57 (latest, sdk-57)

Details
  • GCE image: ubuntu-2604-resolute-amd64-v20260624
  • NDK 27.1.12297006
  • Node.js 22.23.1
  • Bun 1.3.14
  • Yarn 1.22.22
  • pnpm 11.9.0
  • npm 10.9.8
  • Java 17
  • node-gyp 13.0.0
  • Maestro 2.6.1

ubuntu-26.04-jdk-17-ndk-r27b (sdk-56)

详情
  • GCE 镜像:ubuntu-2604-resolute-amd64-v20260505
  • NDK 27.1.12297006
  • Node.js 22.22.2
  • Bun 1.3.13
  • Yarn 1.22.22
  • pnpm 10.33.3
  • npm 10.9.4
  • Java 17
  • node-gyp 12.3.0
  • Maestro 2.5.1

ubuntu-24.04-jdk-17-ndk-r27b-sdk-55 (sdk-55)

详情
  • GCE 镜像:ubuntu-2404-noble-amd64-v20260128
  • NDK 27.1.12297006
  • Node.js 20.19.4
  • Bun 1.3.8
  • Yarn 1.22.22
  • pnpm 10.28.2
  • npm 10.9.3
  • Java 17
  • node-gyp 12.2.0
  • Maestro 2.1.0

ubuntu-24.04-jdk-17-ndk-r27b (sdk-54)

详情
  • GCE 镜像:ubuntu-2404-noble-amd64-v20250805
  • NDK 27.1.12297006
  • Node.js 20.19.4
  • Bun 1.2.20
  • Yarn 1.22.22
  • pnpm 10.14.0
  • npm 10.9.3
  • Java 17
  • node-gyp 11.3.0
  • Maestro 2.0.2

ubuntu-22.04-jdk-17-ndk-r26b (sdk-53)

详情
  • Docker 镜像:ubuntu:jammy-v20250112
  • NDK 26.1.10909125
  • Node.js 20.19.2
  • Bun 1.2.4
  • Yarn 1.22.22
  • pnpm 9.15.5
  • npm 10.8.2
  • Java 17
  • node-gyp 11.1.0

ubuntu-22.04-jdk-17-ndk-r26b 的旧版(sdk-51sdk-52

详情
  • Docker 镜像:ubuntu:jammy-v20250112
  • NDK 26.1.10909125
  • Node.js 20.18.3
  • Bun 1.2.4
  • Yarn 1.22.22
  • pnpm 9.15.5
  • npm 10.8.2
  • Java 17
  • node-gyp 11.1.0

ubuntu-22.04-jdk-17-ndk-r25b (sdk-50)

详情
  • Docker 镜像:ubuntu:jammy-20220810
  • NDK 25.1.8937393
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.9.2
  • npm 9.8.1
  • Java 17
  • node-gyp 10.0.1

ubuntu-22.04-jdk-11-ndk-r23b (sdk-49)

详情
  • Docker 镜像:ubuntu:jammy-20220810
  • NDK 23.1.7779620
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.7.5
  • npm 9.8.1
  • Java 11
  • node-gyp 10.0.1

ubuntu-22.04-jdk-17-ndk-r21e

详情
  • Docker 镜像:ubuntu:jammy-20220810
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.9.2
  • npm 9.8.1
  • Java 17
  • node-gyp 10.0.1

ubuntu-22.04-jdk-11-ndk-r21e

详情
  • Docker 镜像:ubuntu:jammy-20220810
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.7.5
  • npm 9.8.1
  • Java 11
  • node-gyp 10.0.1

ubuntu-22.04-jdk-8-ndk-r21e(已弃用)

详情
  • Docker 镜像:ubuntu:jammy-20220810
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 8
  • node-gyp 10.0.1

ubuntu-20.04-jdk-11-ndk-r23b(已弃用)

详情
  • Docker 镜像:ubuntu:focal-20220823
  • NDK 23.1.7779620
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 11
  • node-gyp 10.0.1

ubuntu-20.04-jdk-11-ndk-r21e(已弃用)

详情
  • Docker 镜像:ubuntu:focal-20220823
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 11
  • node-gyp 10.0.1

ubuntu-20.04-jdk-8-ndk-r21e(已弃用)

详情
  • Docker 镜像:ubuntu:focal-20220823
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 8
  • node-gyp 10.0.1

ubuntu-20.04-jdk-11-ndk-r19c(已弃用)

详情
  • Docker 镜像:ubuntu:focal-20220823
  • NDK 19.2.5345600
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 11
  • node-gyp 10.0.1

ubuntu-20.04-jdk-8-ndk-r19c(已弃用)

详情
  • Docker 镜像:ubuntu:focal-20220823
  • NDK 19.2.5345600
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 8
  • node-gyp 10.0.1

iOS 构建服务器配置

iOS 构建器 VM 运行在 Mac mini 主机上的隔离环境中。每次构建都会获得一个全新的 macOS VM。更多信息请参见iOS 特定资源类

  • 构建资源:

    • medium: 5 performance cores, 20 GiB RAM, 110 GB SSD
    • large: 10 performance cores, 40 GiB RAM, 110 GB SSD
  • npm 缓存

  • CocoaPods 缓存

  • ~/.npmrc 中的全局 npm 配置:

    ~/.npmrc
    registry=http://npm.caches.eas-build.internal
  • ~/.yarnrc.yml 中的全局 Yarn 配置:

    ~/.yarnrc.yml
    unsafeHttpWhitelist: - '*' npmRegistryServer: 'http://npm.caches.eas-build.internal' enableImmutableInstalls: false

iOS 服务器镜像

macos-tahoe-26.5-xcode-26.6 (latest, sdk-57)

详情
  • macOS Tahoe 26.5.2
  • Xcode 26.6 (17F113)
  • Node.js 22.23.1
  • Bun 1.3.14
  • Yarn 1.22.22
  • pnpm 11.9.0
  • npm 10.9.8
  • fastlane 2.236.1
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 13.0.0
  • Maestro 2.6.1

macos-tahoe-26.4-xcode-26.4 (sdk-56)

详情
  • macOS Tahoe 26.4.1
  • Xcode 26.4 (17E202)
  • Node.js 22.22.2
  • Bun 1.3.13
  • Yarn 1.22.22
  • pnpm 10.33.3
  • npm 10.9.4
  • fastlane 2.233.1
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 12.3.0
  • Maestro 2.5.1

macos-sequoia-15.6-xcode-26.2 (sdk-55)

详情
  • macOS Sequoia 15.6.1
  • Xcode 26.2 (17C52)
  • Node.js 20.19.4
  • Bun 1.3.8
  • Yarn 1.22.22
  • pnpm 10.28.2
  • npm 10.9.3
  • fastlane 2.231.1
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 12.2.0
  • Maestro 2.1.0

macos-sequoia-15.6-xcode-26.1

详情
  • macOS Sequoia 15.6.1
  • Xcode 26.1 (17B55)
  • Node.js 20.19.4
  • Bun 1.3.1
  • Yarn 1.22.22
  • pnpm 10.20.0
  • npm 10.9.3
  • fastlane 2.228.0
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 11.5.0
  • Maestro 2.0.9

macos-sequoia-15.6-xcode-26.0 (sdk-54, macos-sequoia-15.5-xcode-26.0)

详情
  • macOS Sequoia 15.6
  • Xcode 26.0 (17A324)
  • Node.js 20.19.4
  • Bun 1.2.22
  • Yarn 1.22.22
  • pnpm 10.16.1
  • npm 10.9.3
  • fastlane 2.228.0
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 11.4.2
  • jq 1.8.0
  • Azul Zulu JDK 17.58.21(OpenJDK 17.0.15)
  • Git 2.49.0
  • Git LFS 3.6.1
  • applesimutils 0.9.12
  • idb-companion 1.1.8
  • Maestro 2.0.3

macos-sequoia-15.6-xcode-16.4(如果你不想使用 Xcode 26,推荐用于 SDK 54)

详情
  • macOS Sequoia 15.6
  • Xcode 16.4 (16F6)
  • Node.js 20.19.4
  • Bun 1.2.20
  • Yarn 1.22.22
  • pnpm 10.14.0
  • npm 10.9.3
  • fastlane 2.228.0
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 11.3.0
  • Maestro 1.41.0
  • jq 1.8.0
  • Azul Zulu JDK 17.58.21(OpenJDK 17.0.15)
  • Git 2.49.0
  • Git LFS 3.6.1
  • applesimutils 0.9.10
  • idb-companion 1.1.8

macos-sequoia-15.5-xcode-16.4 (sdk-53)

详情
  • macOS Sequoia 15.5
  • Xcode 16.4 (16E140)
  • Node.js 20.19.2
  • Bun 1.2.15
  • Yarn 1.22.22
  • pnpm 9.15.9
  • npm 10.8.2
  • fastlane 2.227.1
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 11.2.0
  • jq 1.8.0
  • Azul Zulu JDK 17.58.21(OpenJDK 17.0.15)
  • Git 2.49.0
  • Git LFS 3.6.1
  • applesimutils 0.9.10
  • idb-companion 1.1.8

macos-sequoia-15.4-xcode-16.3

详情
  • macOS Sequoia 15.4.1
  • Xcode 16.3 (16E140)
  • Node.js 20.19.1
  • Bun 1.2.11
  • Yarn 1.22.22
  • pnpm 9.15.9
  • npm 9.8.1
  • fastlane 2.227.1
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 11.2.0
  • jq 1.7.1
  • Azul Zulu JDK 17.58.21(OpenJDK 17.0.15)
  • Git 2.49.0
  • Git LFS 3.6.1
  • applesimutils 0.9.10
  • idb-companion 1.1.8

macos-sequoia-15.3-xcode-16.2 (sdk-52)

详情
  • macOS Sequoia 15.3
  • Xcode 16.2 (16C5032a)
  • Node.js 20.18.3
  • Bun 1.2.4
  • Yarn 1.22.22
  • pnpm 9.15.5
  • npm 9.8.1
  • fastlane 2.226.0
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 11.1.0

macos-sonoma-14.6-xcode-16.1

详情
  • macOS Sonoma 14.6
  • Xcode 16.1 (16B40)
  • Node.js 18.18.0
  • Bun 1.1.33
  • Yarn 1.22.21
  • pnpm 9.12.3
  • npm 9.8.1
  • fastlane 2.225.0
  • CocoaPods 1.16.2
  • Ruby 3.2
  • node-gyp 10.2.0

macos-sonoma-14.6-xcode-16.0

详情
  • macOS Sonoma 14.6
  • Xcode 16.0 (16A242d)
  • Node.js 18.18.0
  • Bun 1.1.27
  • Yarn 1.22.21
  • pnpm 9.10.0
  • npm 9.8.1
  • fastlane 2.222.0
  • CocoaPods 1.15.2
  • Ruby 3.2
  • node-gyp 10.2.0

macos-sonoma-14.5-xcode-15.4 (sdk-51, sdk-50, sdk-49)

详情
  • macOS Sonoma 14.5
  • Xcode 15.4 (15F31d)
  • Node.js 18.18.0
  • Bun 1.1.13
  • Yarn 1.22.21
  • pnpm 9.3.0
  • npm 9.8.1
  • fastlane 2.220.0
  • CocoaPods 1.14.3
  • Ruby 2.7
  • node-gyp 10.1.0

macos-sonoma-14.4-xcode-15.3

详情
  • macOS Sonoma 14.4.1
  • Xcode 15.3 (15E204a)
  • Node.js 18.18.0
  • Bun 1.0.35
  • Yarn 1.22.21
  • pnpm 8.14.1
  • npm 9.8.1
  • fastlane 2.219.0
  • CocoaPods 1.14.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-ventura-13.6-xcode-15.2

详情
  • macOS Ventura 13.6
  • Xcode 15.2 (15C500b)
  • Node.js 18.18.0
  • Bun 1.0.23
  • Yarn 1.22.21
  • pnpm 8.14.1
  • npm 9.8.1
  • fastlane 2.219.0
  • CocoaPods 1.14.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-ventura-13.6-xcode-15.1

详情
  • macOS Ventura 13.6
  • Xcode 15.1 (15C65)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.12.1
  • npm 9.8.1
  • fastlane 2.217.0
  • CocoaPods 1.14.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-ventura-13.6-xcode-15.0

详情
  • macOS Ventura 13.6
  • Xcode 15.0 (15A240d)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.7.6
  • npm 9.8.1
  • fastlane 2.216.0
  • CocoaPods 1.13.0
  • Ruby 2.7
  • node-gyp 10.0.1

支持的 Xcode 版本

我们的目标是尽快支持所有稳定版 Xcode 发布版本,只要它们可用于构建流程,你就可以将应用提交到 App Store Connect。

这通常意味着我们会支持最新的稳定版 Xcode,以及前一个版本(直到 Apple 引入新的最低 Xcode 版本要求)。