构建服务器基础设施

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


生成器 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/gradle.properties 中的全局 Gradle 配置:

    ~/.gradle/gradle.properties
    org.gradle.jvmargs=-Xmx14g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true org.gradle.configureondemand=true org.gradle.daemon=false
  • 全局 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

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(已弃用)

🌐 ubuntu-22.04-jdk-8-ndk-r21e (deprecated)

详细信息
  • 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(已弃用)

🌐 ubuntu-20.04-jdk-11-ndk-r23b (deprecated)

详细信息
  • 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(已弃用)

🌐 ubuntu-20.04-jdk-11-ndk-r21e (deprecated)

详细信息
  • 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(已弃用)

🌐 ubuntu-20.04-jdk-8-ndk-r21e (deprecated)

详细信息
  • 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(已弃用)

🌐 ubuntu-20.04-jdk-11-ndk-r19c (deprecated)

详细信息
  • 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(已弃用)

🌐 ubuntu-20.04-jdk-8-ndk-r19c (deprecated)

详细信息
  • 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 缓存

  • cocoapods-nexus-plugin

  • 全局 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-sequoia-15.6-xcode-16.4 (recommended for SDK 54 if you don't want to use Xcode 26)

详细信息
  • 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).