首页指南参考教程

构建服务器基础设施

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


生成器 IP 地址

¥Builder IP addresses

构建服务器的 IP 地址列表可用 了解有关第三方库中已知问题的更多信息。我们不希望经常更改列表。列表包括 "上次修改" 和 "过期" 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 运行器托管在 Google Cloud Platform 中。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 钩子 通过 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.

为构建选择图片时,你可以使用下面提供的全名或别名之一:autolatestsdk-50sdk-49

¥When selecting an image for the build you can use the full name provided below or one of the aliases: auto, latest, sdk-50 or sdk-49.

  • 使用特定名称可保证环境一致,只需进行少量更新。

    ¥The use of a specific name guarantees a consistent environment with only minor updates.

  • 当使用 auto 别名时,将根据项目配置、Expo SDK 版本和 React Native 版本选择构建映像。你可以在 Spin up 构建环境构建日志部分中检查用于构建的映像。

    ¥When using the auto alias, the build image will be selected based on the project configuration, Expo SDK version, and React Native version. You can check what image is used for a build in the Spin up build environment build logs section.

  • latest 别名将分配给具有最新版本软件的映像。

    ¥The latest alias will be assigned to the image with the most up-to-date versions of the software.

  • sdk-50 别名将分配给最适合 SDK 50 版本的映像。

    ¥The sdk-50 alias will be assigned to the image best suited for SDK 50 builds.

  • sdk-49 别名将分配给最适合 SDK 49 版本的映像。

    ¥The sdk-49 alias will be assigned to the image best suited for SDK 49 builds.

  • SDK 别名将随着每个新的 SDK 版本更新。

    ¥SDK aliases will be updated with every new SDK release.

  • latest 别名将随着每个新映像的发布而更新。

    ¥The latest alias will be updated with every new image release.

注意:如果你未在 eas.json 中提供 image,则默认情况下你的构建将使用 auto 别名。

Android 构建服务器配置

¥Android build server configurations

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

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

  • 构建资源:

    ¥Build resources:

    • medium: 4 vCPUs, 16 GB RAM (n2-standard-4 Google Cloud machine type)
    • large: 8 vCPUs, 32 GB RAM (n2-standard-8 Google Cloud machine type)
  • 使用 Kubernetes 部署的 npm 缓存

    ¥npm cache deployed with Kubernetes

  • 使用 Kubernetes 部署 Maven 缓存

    ¥Maven cache deployed with Kubernetes

  • ~/.gradle/gradle.properties 中的全局 Gradle 配置:

    ¥Global Gradle configuration in ~/.gradle/gradle.properties:

    ~/.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 配置:

    ¥Global npm configuration in ~/.npmrc:

    ~/.npmrc
    registry=http://10.4.0.19:4873
    
  • ~/.yarnrc.yml 中的全局 Yarn 配置:

    ¥Global Yarn configuration in ~/.yarnrc.yml:

    ~/.yarnrc.yml
    unsafeHttpWhitelist:
      - '*'
    npmRegistryServer: 'http://10.4.0.19:4873'
    enableImmutableInstalls: false
    

Android 服务器镜像

¥Android server images

ubuntu-22.04-jdk-17-ndk-r26b(latest, sdk-51)

Details
  • Docker 镜像:ubuntu:jammy-v20240614

    ¥Docker image: ubuntu:jammy-v20240614

  • NDK 26.1.10909125

  • Node.js 18.18.0

  • Bun 1.1.13

  • Yarn 1.22.21

  • pnpm 9.3.0

  • npm 9.8.1

  • Java 17

  • node-gyp 10.1.0

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

Details
  • Docker 镜像:ubuntu:jammy-20220810

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

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

Details
  • Docker 镜像:ubuntu:jammy-20220810

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

ubuntu-22.04-jdk-17-ndk-r21e

Details
  • Docker 镜像:ubuntu:jammy-20220810

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

ubuntu-22.04-jdk-11-ndk-r21e

Details
  • Docker 镜像:ubuntu:jammy-20220810

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

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

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

Details
  • Docker 镜像:ubuntu:jammy-20220810

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

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

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

Details
  • Docker 镜像:ubuntu:focal-20220823

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

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

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

Details
  • Docker 镜像:ubuntu:focal-20220823

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

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

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

Details
  • Docker 镜像:ubuntu:focal-20220823

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

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

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

Details
  • Docker 镜像:ubuntu:focal-20220823

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

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

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

Details
  • Docker 镜像:ubuntu:focal-20220823

    ¥Docker image: 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

  • 节点 gyp 10.0.1

    ¥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.

  • 硬件:

    ¥Hardware:

    • M1 3.2GHz 8 核,16 GB 内存

      ¥M1 3.2GHz 8-Core, 16 GB RAM

    • M2 3.9GHz 8 核,24 GB 内存

      ¥M2 3.9GHz 8-Core, 24 GB RAM

    • M2 Pro 3.9GHz 12 核,32 GB RAM

      ¥M2 Pro 3.9GHz 12-Core, 32 GB RAM

  • 构建资源:

    ¥Build resources:

    • medium: 3 vCPUs, 8 GB RAM
    • large:
      • 6 vCPUs, 22 GB RAM if running on an M2 Mac
      • 5 vCPUs, 12 GB RAM if running on an M2 Pro Mac
  • npm 缓存

    ¥npm cache

  • CocoaPods 缓存

    ¥CocoaPods cache

  • cocoapods-nexus-plugin

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

    ¥Global npm configuration in ~/.npmrc:

    ~/.npmrc
    registry=http://10.94.183.70:4873
    
  • ~/.yarnrc.yml 中的全局 Yarn 配置:

    ¥Global Yarn configuration in ~/.yarnrc.yml:

    ~/.yarnrc.yml
    unsafeHttpWhitelist:
      - '*'
    npmRegistryServer: 'http://10.94.183.70:4873'
    enableImmutableInstalls: false
    

iOS 服务器镜像

¥iOS server images

macos-sonoma-14.5-xcode-15.4latestsdk-51sdk-50sdk-49

Details
  • 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

  • 可可豆 1.14.3

    ¥CocoaPods 1.14.3

  • Ruby 2.7

  • node-gyp 10.1.0

macos-sonoma-14.4-xcode-15.3

Details
  • 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

  • 快车道 2.219.0

    ¥fastlane 2.219.0

  • 可可豆 1.14.3

    ¥CocoaPods 1.14.3

  • Ruby 2.7

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

macos-ventura-13.6-xcode-15.2

Details
  • 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

  • 快车道 2.219.0

    ¥fastlane 2.219.0

  • 可可豆 1.14.3

    ¥CocoaPods 1.14.3

  • Ruby 2.7

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

macos-ventura-13.6-xcode-15.1

Details
  • 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

  • 快车道 2.217.0

    ¥fastlane 2.217.0

  • 可可豆 1.14.3

    ¥CocoaPods 1.14.3

  • Ruby 2.7

  • 节点 gyp 10.0.1

    ¥node-gyp 10.0.1

macos-ventura-13.6-xcode-15.0

Details
  • 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

  • 快车道 2.216.0

    ¥fastlane 2.216.0

  • 可可豆 1.13.0

    ¥CocoaPods 1.13.0

  • Ruby 2.7

  • 节点 gyp 10.0.1

    ¥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 推出新的 新开发版本)。

¥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).

Expo 中文网 - 粤ICP备13048890号