构建服务器基础设施

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


For the complete documentation index, see llms.txt. Use this file to discover all available pages.

生成器 IP 地址

🌐 Builder IP addresses

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

🌐 A list of the IP addresses of the build servers is available in this file. We do not expect to change the list often. The list includes "Last-Modified" and "Expires" ISO 8601 timestamps that respectively specify the last time the list was updated and the time until which we commit to not change the list.

Linux 运行器托管在谷歌云平台。macOS 运行器托管在我们自己的 macOS 云中。

🌐 Linux runners are hosted in Google Cloud Platform. macOS runners are hosted in our own macOS cloud.

配置构建环境

🌐 Configuring build environment

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

🌐 Images for each platform have one specific version of Node.js, Yarn, CocoaPods, Xcode, Ruby, Fastlane, and so on. You can override some of the versions in eas.json. If there is no dedicated configuration option you are looking for, you can use npm hooks to install or update any system dependencies with apt-get or brew. Consider that those customizations are applied during the build and will increase your build times.

在为构建选择镜像时,你可以使用下面提供的全名,或者使用其中一个别名:autolatest,或针对特定 SDK 使用 sdk-55

🌐 When selecting an image for the build you can use the full name provided below or one of the aliases: auto, latest, or for a particular SDK such as sdk-55.

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

信息 注意: 如果你在 eas.json 中没有提供 image,你的构建将默认使用 auto 别名。

Android 构建服务器配置

🌐 Android build server configurations

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

🌐 Android builders run on virtual machines in an isolated environment. Every build gets its own dedicated VM instance.

  • 构建资源:

    • 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)
  • 使用 Kubernetes 部署的 npm 缓存

  • 使用 Kubernetes 部署的 Maven 缓存

  • 当构建环境被配置时,Gradle JVM 参数通过 GRADLE_OPTS 环境变量注入。请参见下面的 Gradle JVM 参数

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

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

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

Gradle JVM 参数

🌐 Gradle JVM args

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

🌐 EAS Build sets the GRADLE_OPTS environment variable on the build VM (the worker) before Gradle runs. The values depend on the resource class you select:

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

除了 -Xmx,该工作者还通过 -Dorg.gradle.jvmargs 将以下 JVM 参数传递给 Gradle 构建 JVM:

🌐 In addition to -Xmx, the worker passes the following JVM args to the Gradle build JVM via -Dorg.gradle.jvmargs:

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

该工作者还在 GRADLE_OPTS 上设置这些顶层 Gradle 属性:

🌐 The worker also sets these top-level Gradle properties on GRADLE_OPTS:

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

警告 工作线程通过 GRADLE_OPTS 设置 org.gradle.jvmargs,这会覆盖你项目的 gradle.properties 中定义的任何 org.gradle.jvmargs

覆盖 GRADLE_OPTS

🌐 Overriding GRADLE_OPTS

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

🌐 You can replace the worker default by setting GRADLE_OPTS under a build profile's env in eas.json, in a workflow file, or with EAS Environment Variables. Project environment values take precedence over the worker's default values.

Android 服务器镜像

🌐 Android server images

ubuntu-24.04-jdk-17-ndk-r27b-sdk-55 (latest, 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

🌐 Legacy ubuntu-22.04-jdk-17-ndk-r26b-like (sdk-51, sdk-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 build server configurations

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

🌐 iOS builder VMs run on Mac mini hosts in an isolated environment. Every build gets its own fresh macOS VM. For more information, see iOS-specific resource classes.

  • 构建资源:

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

  • CocoaPods 缓存

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

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

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

iOS 服务器镜像

🌐 iOS server images

macos-sequoia-15.6-xcode-26.2 (latest, 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 红杉 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 红杉 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 红杉 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 红杉 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 版本

🌐 Supported Xcode versions

我们旨在支持所有稳定的 Xcode 版本,这些版本允许你在构建过程中使用时将你的应用提交到 App Store Connect。

🌐 We aim to support all stable Xcode releases that allow you to submit your app to the App Store Connect when used during the build process.

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

🌐 This usually means that we support the latest stable Xcode version and the previous one (until the new minimal Xcode version requirement is introduced by Apple).