内部分发
编辑页面
了解 EAS Build 如何为你的构建提供可共享的 URL,以便你与团队进行内部共享。
For the complete documentation index, see llms.txt. Use this file to discover all available pages.
使用 EAS Build 设置内部发布构建只需几分钟,并提供了一种简化的方式,让你与团队和其他测试人员共享应用以收集反馈。它通过提供一个 URL 来实现这一点,允许他们将应用直接安装到自己的设备上。如果你还不确定是否要采用这种方式,并且想了解内部发布应用的所有可用选项,请参阅 用于审核的应用发布概览 指南。
使用内部发布
要为内部发布配置构建配置文件,请将 "distribution": "internal" 设置在该配置文件上。当你设置此配置时,它会对构建配置文件产生以下影响:
- Android:
gradleCommand的默认行为将变为生成 APK 而不是 AAB。如果你指定了自定义的gradleCommand,请确保它 生成 APK,否则它将无法直接安装到 Android 设备上。此外,EAS Build 会为 APK 签名生成新的 Android keystore,或者如果包名与你的 开发构建 相同,则会使用现有的 keystore。 - iOS:使用此配置文件的构建将使用 ad hoc 或 enterprise provisioning 之一。在使用 ad hoc provisioning 时,EAS Build 会生成一个包含设备 UDID 允许列表的 provisioning profile,只有在构建时位于该列表中的设备才能安装它。你可以通过运行
eas device:create并创建一个新构建来添加设备。 - 默认情况下,内部发布构建 URL 对任何拥有该 URL 的人都可用,每个 URL 由一个 32 字符的 UUID 标识。如果你希望仅允许已授权的 Expo 账户登录后访问这些构建,可以在你的 项目设置 中禁用 未认证访问内部构建 选项。
有关如何配置、创建和安装构建的更多信息,请参阅下面的 EAS Build 内部发布教程:
完整的分步指南,介绍如何使用 EAS Build 设置并共享内部发布构建。
CI 上的自动化(可选)
你可以使用 --non-interactive 标志在 CI 中以非交互方式运行内部发布构建。进一步了解如何从 CI 触发构建。
对于 iOS ad hoc 构建,eas build --non-interactive 会复用有效的 provisioning profile,但不会更新其设备列表。构建可以成功,但应用可能无法安装到在该 profile 上次更新后新增的已注册设备上。
将 --refresh-ad-hoc-provisioning-profile 与 --non-interactive 一起传入,以便在构建前更新 Apple Developer Portal 上由 Expo 管理的 ad hoc provisioning profile。
--refresh-ad-hoc-provisioning-profile需要 EAS CLI 19.1.0 或更高版本。
EAS 使用 App Store Connect API key 进行认证。它会读取为你的 Apple 团队在 EAS 上注册的设备,并在门户中注册任何缺失的 UDID,然后刷新 profile 的设备列表。
当你使用此标志时,EAS 会为构建目标的 Apple 平台选择所有匹配的设备:iOS 的 iPhone 和 iPad,macOS 的 Mac。
- eas build --platform ios --profile preview --non-interactive --refresh-ad-hoc-provisioning-profile对于 EAS Workflows,请在构建任务的 params 中设置 refresh_ad_hoc_provisioning_profile: true,并保持相同的 profile 要求。请参阅 构建任务参数。
该 profile 必须设置 "distribution": "internal",并使用 由 EAS 管理的凭据。你至少需要一个来自 eas device:create 的设备,以及通过 环境变量(EXPO_ASC_API_KEY_PATH、EXPO_ASC_KEY_ID 和 EXPO_ASC_ISSUER_ID)在 CI 中提供的 App Store Connect API key,或者在 EAS 中为该项目提交时存储的 key。
否则,在使用 eas device:create 注册设备后,请交互式运行 eas build,并使用你的 Apple 账户登录,以便 EAS 可以更新 ad hoc provisioning profile。
管理设备
在 EAS Workflows 中,你可以暂停工作流,直到测试人员注册一个 iOS 设备,并由团队成员使用 apple-device-registration-request 任务批准它。将其与一个设置了 refresh_ad_hoc_provisioning_profile: true 的 build 任务配对,以便将新设备包含在内部发布构建中。
你可以通过运行以下命令查看任何使用 eas device:create 注册的设备:
# 列出已注册用于 ad hoc provisioning 的设备- eas device:list使用 Expo 为 ad hoc provisioning 注册的设备,在它们被用于通过 EAS Build 生成一个新的内部构建的 provisioning profile,或通过 eas build:resign 重新签名现有构建 后,将会出现在你的 Apple Developer Portal 中。
移除设备
如果某个设备已不再使用,可以通过运行以下命令将其从此列表中移除:
# 从你的 Expo 账户中删除设备,并可选择在 Apple Developer Portal 上将其禁用- eas device:delete此命令还会提示你是否要在 Apple Developer Portal 上禁用该设备。已禁用的 设备仍然会计入 Apple 每个应用每年最多 100 台设备的限制 ,适用于 ad hoc 分发。
重命名设备
通过网站 URL/二维码添加的设备,在选择用于 EAS Build 时,默认会显示其 UDID。你可以使用以下命令为设备指定更友好的名称:
# 在 Expo 和 Apple Developer Portal 上重命名设备- eas device:rename发布机制概览
以下是内部发布支持的、用于将应用分发到设备的不同机制。
Android:构建并分发 APK
要将应用共享到 Android 设备,你必须为项目构建一个 APK(Android application package 文件)。一旦用户接受了安装尚未经过 Play Store 审核的应用的安全警告,就可以通过 USB 直接将 APK 安装到 Android 设备上,也可以通过网页下载文件,或通过电子邮件或聊天应用进行安装。应用的 AAB(Android app bundle)二进制文件必须通过 Play Store 分发。
iOS:Ad Hoc 分发
Apple 提供了 ad hoc provisioning profiles,用于在测试设备注册到你的 Apple Developer 账户后,将应用分发给这些设备。此方法需要付费的 Apple Developer 账户,并且该账户每年最多只能使用此方法向 100 台 iPhone 分发应用。
你需要知道每台将安装你的应用的设备的 UDID(唯一设备标识符),如果你尝试与非开发者共享,这可能会比较麻烦。添加新设备将需要重新构建你的应用,或使用新的凭据 重新签名构建。
如果你以前没有做过,正确设置 Ad Hoc 证书可能会让人望而生畏;即使做过,也会很繁琐。如果你正在使用 EAS Build,它针对 Expo 和 React Native 项目进行了优化,我们会帮你处理设置 Ad Hoc 凭据中耗时的部分。
iOS:Enterprise 分发
如果你的应用仅供大型组织的员工内部使用,且无法通过 App Store 分发,你应该使用 Enterprise 分发。与 Ad Hoc Distribution 不同,能够安装你应用的设备数量没有限制,而且你无需管理每台设备的 UDID。通常,这些应用会通过移动设备管理(MDM)解决方案分发给最终用户。Enterprise Distribution 需要加入 Apple Developer Enterprise Program。加入 Enterprise Program 的组织必须满足除 App Store 分发之外的额外要求。