构建服务器基础设施

编辑页面

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


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

构建服务器 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-55

  • 使用特定名称可保证环境一致,仅会有小幅更新。
  • 使用 auto 别名时,构建镜像将根据项目配置、Expo SDK 版本和 React Native 版本来选择。你可以在构建日志的 Spin up build environment 部分查看此次构建使用了哪个镜像。
  • 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 构建器运行在隔离环境中的虚拟机上。每次构建都会获得自己的专用 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)
  • 使用 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
  • ~/.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

Android 服务器镜像

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

详情
  • 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-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 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 版本要求)。