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-get 或 brew 安装或更新任何系统依赖。请注意,这些自定义配置会在构建过程中应用,并且会增加构建耗时。
在选择构建镜像时,你可以使用下面提供的完整名称,或使用以下别名之一:auto、latest,或者针对特定 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别名会随着每个新镜像版本的发布而更新。
信息 注意: 如果你没有在 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)
-
构建环境预配时,会通过
GRADLE_OPTS环境变量注入 Gradle JVM 参数。请参见下方的 Gradle JVM 参数。 -
~/.npmrc 中的全局 npm 配置:
~/.npmrcregistry=http://npm.production.caches.eas-build.internal -
~/.yarnrc.yml 中的全局 Yarn 配置:
~/.yarnrc.ymlunsafeHttpWhitelist: - '*' npmRegistryServer: 'http://npm.production.caches.eas-build.internal' enableImmutableInstalls: false
Gradle JVM 参数
EAS Build 会在 Gradle 运行前,将 GRADLE_OPTS 环境变量设置到构建 VM(worker)上。其值取决于你选择的资源类别:
| 资源类别 | -Xmx(最大堆) |
|---|---|
medium | 4g |
large | 8g |
除了 -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
警告 worker 会通过
GRADLE_OPTS设置org.gradle.jvmargs,这会覆盖你项目 gradle.properties 中定义的任何org.gradle.jvmargs。
覆盖 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-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 构建器 VM 运行在 Mac mini 主机上的隔离环境中。每次构建都会获得一个全新的 macOS VM。更多信息请参见iOS 特定资源类。
-
构建资源:
-
~/.npmrc 中的全局 npm 配置:
~/.npmrcregistry=http://npm.caches.eas-build.internal -
~/.yarnrc.yml 中的全局 Yarn 配置:
~/.yarnrc.ymlunsafeHttpWhitelist: - '*' 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 版本要求)。