本文档于 2022 年 8 月存档,不会收到任何进一步更新。 SDK 46 是 Classic Builds 支持的最后一个 SDK,Classic Build 服务将在 2023 年 1 月 4 日之后停止运行所有 SDK 版本。 查看 在你自己的基础架构上运行构建 和 从 CI 触发构建。
构建独立的 iOS 应用需要 注意: macOS。
本指南介绍了 Expo 的一项高级功能。 在大多数情况下,你可以使用 Expo 的构建服务构建独立的 Expo 应用,如 构建独立应用 指南中所述。
如果你不想依赖我们构建器的稳定性,并且不喜欢在队列中等待获得独立的应用构建,那么你可以自己构建你的 Expo 项目。 你唯一需要的是 Turtle CLI。 Turtle CLI 是用于构建 Expo 独立应用的命令行接口。 你可以在 CI 和私有计算机上使用它。
你需要安装这些东西:
sudo xcodebuild -license。通过运行以下命令安装 Turtle CLI:
$ npm install -g turtle-cli
然后运行 turtle setup:ios 和/或 turtle setup:android 以验证所有内容均已正确安装。 此步骤是可选的,并且也在 turtle build:[ios|android] 第一次运行期间执行。 请注意,Android 安装命令会下载、安装和配置适当版本的 Android SDK 和 NDK。
如果你想让第一次构建更快,你可以向安装命令提供 Expo SDK 版本,如下所示: turtle setup:ios --sdk-version 38.0.0。
这告诉 Turtle CLI 为给定的 SDK 版本下载其他与 Expo 相关的依赖。
所有与 Expo 相关的依赖都将安装在你的主目录中名为 .turtle 的目录中。 如果你需要释放一些磁盘空间,可以安全地删除此目录。
当你使用 Turtle CLI 构建独立应用时,构建过程将在你的本地计算机上进行。
Turtle CLI 使用与我们的服务器上运行的完全相同的代码库(expo build:[ios|android] 命令)。
这意味着你需要将应用发布到 Expo 的服务器或将其托管在你自己的服务器 在使用 Turtle CLI 构建之前 上。
无论你希望 Expo 托管你的应用,还是你想自己托管你的应用,你所需要做的就是遵循相应的指南:
如果你选择将应用发布到 Expo 服务器,你必须拥有 Expo 开发者账户并向 turtle-cli 提供你的凭据。
建议的方法是使用你的凭据定义两个名为 EXPO_USERNAME 和 EXPO_PASSWORD 的环境变量,尽管你也可以从命令行将这些值传递给构建命令。 我们建议使用环境变量来帮助你的凭据远离终端历史记录或 CI 日志。
Turtle CLI 使用已发布的应用清单(而不是本地 app.json/app.config.js 文件)作为应用配置(ios.buildNumber、android.versionCode 等)的真实来源。
在开始构建之前,请准备以下事项:
要了解如何生成这些内容,请首先参阅 构建独立应用 上的指南。
分别使用密钥库密码和密钥密码的值设置 EXPO_ANDROID_KEYSTORE_PASSWORD 和 EXPO_ANDROID_KEY_PASSWORD 环境变量。
然后,启动独立应用构建:
$ turtle build:android \\
--keystore-path /path/to/your/keystore.jks \\
--keystore-alias PUT_KEYSTORE_ALIAS_HERE
如果构建成功完成,你将在日志的最后一行找到构建工件的路径。
如果你想打印所有可用命令参数的列表,请运行 turtle build:android --help。
除非你仅针对 iOS 模拟器进行构建,否则请准备以下内容:
要了解如何生成这些内容,请首先参阅 构建独立应用 上的指南。
使用分发证书密码的值设置 EXPO_IOS_DIST_P12_PASSWORD 环境变量。
然后,启动独立应用构建:
$ turtle build:ios \\
--team-id YOUR_TEAM_ID \\
--dist-p12-path /path/to/your/dist/cert.p12 \\
--provisioning-profile-path /path/to/your/provisioning/profile.mobileprovision
如果构建成功完成,你将在日志的最后一行找到构建工件的路径。
如果你想打印所有可用命令参数的列表,请运行 turtle build:ios --help。
请参阅 expo/turtle-cli-example 存储库,了解如何将 Turtle CLI 与流行的 CI 服务(CircleCI 和 Travis·西尔)结合使用的示例。