This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
内部分发
编辑页面
了解 EAS Build 如何为你的构建提供可共享的 URL,以便你与团队进行内部共享。
使用 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 要求。请参阅 构建任务参数。
配置文件必须设置 "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 注册的设备,在它们被用于为新的内部构建生成 provisioning profile,或使用 eas build:resign 重新签名现有构建 后,会显示在你的 Apple Developer Portal 上。
在新的或最近续订的 Apple Developer Program 会员资格中,新注册的设备可能不会立即可安装。 使用 Expo 注册设备并不会将其注册到 Apple。只有当该设备首次包含在 provisioning profile 中时,它才会被添加到你的 Apple Developer Portal,而这发生在你创建新的内部构建或重新签名现有构建时。对于这些会员资格,Apple 可能需要最多 24–72 小时来完成对新注册设备的处理,在此期间该设备无法添加到 provisioning profiles 中。因此,包含新设备的首次构建或重新签名可能会失败。请等待 Apple 完成处理,然后再创建新构建或重新签名一次,以生成包含该设备且可安装的构建。
移除设备
如果某个设备已不再使用,可以通过运行以下命令将其从此列表中移除:
# 从你的 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 应用安装包文件)。一旦用户接受了安装尚未经过 Play Store 审核的应用的安全警告,就可以通过 USB 直接将 APK 安装到 Android 设备上,也可以通过网页下载文件,或通过电子邮件或聊天应用进行安装。应用的 AAB(Android 应用捆绑包)二进制文件必须通过 Play Store 分发。
iOS:Ad Hoc 分发
Apple 提供了 ad hoc provisioning profiles,用于在测试设备注册到你的 Apple Developer 账户后,将应用分发给这些设备。此方法需要付费的 Apple Developer 账户,并且该账户每年最多只能使用此方法向 100 台 iPhone 分发应用。
你需要知道每台将安装你的应用的设备的 UDID(唯一设备标识符),如果你尝试与非开发者共享,这可能会比较麻烦。添加新设备将需要重新构建你的应用,或使用新的凭据 重新签名构建。
如果你之前没有设置过 Ad Hoc 证书,正确完成设置可能会让人望而生畏;即使设置过,也依然十分繁琐。如果你使用的是针对 Expo 和 React Native 项目进行了优化的 EAS Build,我们将为你处理设置 Ad Hoc 凭据中耗时的部分。
iOS:Enterprise 分发
如果你的应用仅供大型组织的员工内部使用,且无法通过 App Store 分发,你应该使用 Enterprise 分发。与 Ad Hoc Distribution 不同,能够安装你应用的设备数量没有限制,而且你无需管理每台设备的 UDID。通常,这些应用会通过移动设备管理(MDM)解决方案分发给最终用户。Enterprise Distribution 需要加入 Apple Developer Enterprise Program。加入 Enterprise Program 的组织必须满足除 App Store 分发之外的额外要求。