跳过主要内容
iOS Android 指南

如何分发iOS和Android应用到测试者

如何分发iOS和Android应用到测试者:TestFlight、Google Play测试跟踪、内部应用共享、Firebase App Distribution和ad hoc构建。

文章来源

马丁·多纳迪厄

作者

Valeria

审阅者

乔丹

编辑

如何分发 iOS 和 Android 应用到测试者

要分发 iOS 应用到测试者,使用 TestFlight(内部测试者立即,外部测试者经过短期 Beta App Review)或一个 ad hoc 构建到注册设备。对于 Android,使用 Google Play 测试跟踪(内部,关闭或开放),Play 内部应用分享一次性链接,或者通过 Firebase App 分发或直接下载一个签名 APK。哪一个是正确的取决于测试者是谁,数量有多少,以及是否需要构建通过商店基础设施。

本指南将比较每个选项,展示如何为一个 Capacitor 应用设置每个选项,并列出测试者通常遇到的错误。

选择方法

方法 平台 最大测试者 测试者获取前审查 测试者需要 最佳选择
内部测试 iOS 100名团队成员 否 App Store Connect用户,TestFlight应用 您的团队
context: 企业产品/价格页面。角色: UI标签。位置: 企业页面。企业伙伴关系您的团队标签 iOS 10,000 外部测试 Beta App Review (版本的第一版) 测试用户,客户
临时 iOS 每年每种设备类型100台设备 否 注册UDID,开发者模式 小型QA团队,无苹果审查
内部测试 Android 100 通常在几分钟内 Google账户在邮件列表 您的团队
测试封闭试验 Android 电子邮件列表或Google群组 Yes Google账户,同意链接 Beta用户,12名测试者要求
开放测试 Android 无限制或限制 Yes 在列表中同意 公开测试
分享内部应用 Android 拥有链接的任何人 否 Google账户,设置已启用 快速QA构建,任何版本 code
Firebase App 分发 双平台 大型 否 邮件邀请; iOS需要注册的UDID 跨平台QA
直接APK链接 Android 任何人 否 允许未知来源 快速内部测试

经验之谈:

  • 您将在商店发布的同一版本? 使用TestFlight和Play tracks。测试者使用的二进制文件就是将被推广的二进制文件。
  • 每日QA版本? 在两家商店进行内部测试,或者Firebase App Distribution。
  • 需要在分钟内测试一个web层的更改? 将一个 live update 发送到测试频道,而不是一个新的二进制文件。

在您发布之前:签名

每个测试构建都必须签名。

  • iOS 测试构建使用 App Store Connect 或一个 Ad Hoc 配置文件(直接安装)。两者都使用一个 Apple Distribution 证书。请参阅 iOS 证书和配置文件解释 Android iOS 证书和配置文件概述.
  • 签名 iOS 测试构建使用 App Store Connect 或 Ad Hoc 配置文件(直接安装)。两者都使用一个 Apple Distribution 证书。

iOS: 测试Flight

上传一个构建

从 Xcode: 产品 > 归档, 然后 发布 App > App Store Connect > 上传. 从命令行或 CI 中导出一个 .ipa 并使用 App Store Connect API 密钥上传,或者让云构建服务来处理。

由于 2026 年 4 月起,上传的构建必须使用 Xcode 26 或更高版本。

添加这个密钥到 ios/App/App/Info.plist 如果您的应用仅使用标准 HTTPS 加密,那么 App Store Connect 就不会在每次构建时询问导出许可问题:

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

处理时间从几分钟到一小时不等。您会收到一封电子邮件,当构建就绪时。

内部测试

  1. 在 App Store Connect 中打开您的应用 TestFlight > 内部测试,并创建一个组。
  2. 添加团队成员。他们必须具有 App Store Connect 角色(管理员、应用管理者、开发者、营销…)。最多 100 人。
  3. 启用 自动分发 以便每个新建的构建都发送到组。
  4. 测试人员从 App Store 安装 TestFlight 应用并接受邀请。

无需审查。这是从上传到手机的最快路径。

外部测试

  1. TestFlight > 外部测试 > + 创建一个群组。
  2. 通过电子邮件添加测试者,或启用一个 公共链接 可选的测试者限制。
  3. 将构建添加到群组并填写 测试信息 (测试内容、反馈邮箱、beta应用描述和demo登录信息)
  4. 提交 Beta应用审核. 每个版本的第一个构建会被审核,通常在一天内。同一个版本的后续构建通常会直接发布,不需要完整审核。

支持至多 10,000 名测试者。测试者可以直接从 TestFlight 发送截图和反馈,这些截图和反馈将在 App Store Connect 中显示。

TestFlight 有限制

  • 构建在 90 天后过期.
  • 测试者需要支持的 iOS 版本(Capacitor 8 需要 iOS 15 或更高版本)。
  • TestFlight 构建使用生产 App Store 签名,因此推送通知使用 生产环境 APNs 环境。
  • TestFlight 中的内购使用沙盒,不会产生费用。

iOS: 透明式分发

透明式分发构建直接安装在您在 Apple Developer portal 注册的设备上,且无需 TestFlight 或 Apple 审核。

  1. 收集每位测试者的 UDID。测试者可以在自己的手机上使用 iOS UDID 查找器, 或者您可以从 Finder 或 Xcode 中读取它,当设备连接时。
  2. 在 证书、标识符和配置文件 > 设备.
  3. 创建一个 测试者 包含这些设备的
  4. 配置文件并下载它。 .ipa 使用 配置文件(Xcode:发布测试 > 发布测试
  5. , 这是 Ad Hoc 的新名称。
    • 拖拽到 .ipa 在 Finder 或 Xcode > 窗口 > 设备和模拟器.
    • 或使用 HTTPS 的 itms-services manifest 来托管它,测试者可以通过点击链接来安装。像 Firebase App Distribution 这样的服务会为您完成此操作。
  6. 在 iOS 16 或更高版本中,安装 .ipa 需要在设备上 开发者模式 设置 > 私密性和安全性 itms-services 。从链接安装不需要它。请参阅 如何在 iOS 上启用 Developer Mode.

添加新测试者意味着注册他们的 UDID,重新生成配置文件并重新构建。设备槽(每个设备家族 100 个)只在您的会员年期重新生效时才会重置,因此不要随意注册设备。

Android: Google Play 测试轨道

Play Console 有三个测试轨道加上生产环境。所有这些都需要使用您的上传密钥签署 AAB。

内部测试

  1. 测试 > 内部测试 > 测试者: 创建一个电子邮件列表(最多 100 个地址)。
  2. 创建新版本,上传 AAB,添加发布说明,保存并发布。
  3. 复制 优惠链接 并将其发送给测试者。他们接受并从 Google Play 商店安装。

内部发布通常在几分钟内可用,不需要等待完整的审查。首次发布新应用可能需要更长时间,因为 Google 需要处理应用程序。

封闭测试

Closed tracks 是经过审查的,并且支持邮件列表或 Google Groups。 这是您需要的跟踪。 12 名测试者,14 天 rule that applies to personal developer accounts created after November 13, 2023, before production access. Using a Google Group makes it easy for testers to join. Details are in.

how to create Apple and Google Play developer accounts

Open testing

Our Our Android beta testing guide

compares the tracks in more detail.

Internal app sharing is the fastest way to get any APK or AAB on a device through the Play Store, without version code rules and without review.

  1. Internal app sharing is the fastest way to get any APK or AAB on a device through the Play Store, without version rules and without review. In Play Console, open 内部应用分享 (测试中)并添加上传者
  2. 上传 APK 或 AAB。您会得到一个链接
  3. 测试者打开 Play Store 应用,进入设置,点击 Play Store 版本 七次点击开发者设置,打开 内部应用分享.
  4. 测试者打开链接并安装

它对于 pull request 构建的 QA 有用,因为版本代码不需要增加

Android: 直接 APK 和 Firebase App 分发

直接 APK

构建一个签名的发布 APK。一个新Capacitor项目没有 release 签名配置, assembleRelease 因此 signingConfigs.release 将产生一个无法安装的未签名APK。添加一个 key.properties) to android/app/build.gradle 读取)到 buildTypes.release.signingConfig 并首先指向它。

bun run build
bunx cap sync android
cd android && ./gradlew assembleRelease

分享 android/app/build/outputs/apk/release/app-release.apk 通过一个链接。测试者允许浏览器或文件管理器安装未知应用并打开文件。如果他们已经安装了Play Store版本,则必须先卸载它,因为签名不同。您还可以通过 adb install -r app-release.apk (参见 如何在Android上启用开发者选项”).

)在USB上安装。从2026年9月30日起,仅在巴西、印度尼西亚、新加坡和泰国的认证Android设备上安装应用程序,其包名已在Android开发者控制台或Play控制台中注册。如果您的测试者位于这些国家,请在Android开发者控制台或Play控制台中注册包名。通过 adb 的安装不受影响。

Firebase App 分发

Firebase App 分发适用于两种平台,发送电子邮件邀请,并跟踪谁安装了哪个版本。

bun add -g firebase-tools
firebase login

firebase appdistribution:distribute android/app/build/outputs/apk/release/app-release.apk \
  --app 1:1234567890:android:abc123def456 \
  --groups "qa-team" \
  --release-notes "Fix checkout crash"
  • 安卓测试者从电子邮件链接或 App Tester 应用安装。
  • iOS 测试者仍然需要在 ad hoc (或开发) 配置文件中。 App 分发收集他们的 UDIDs 当他们接受邀请时,但您需要注册并重建。
  • AAB 分发需要将 Firebase 项目链接到 Google Play。

如果您不想维护 Mac 和每个 CI 运行器上的签名 Capgo 构建 builds Capacitor apps in the cloud. For test builds it can skip store submission and upload the binary to a time-limited download link with a QR code:

# Android APK/AAB for testers, no Play upload
bunx @capgo/cli@latest build request com.example.app \
  --platform android --no-playstore-upload --output-upload --output-retention 2d

# iOS ad hoc build (no App Store submission)
bunx @capgo/cli@latest build request com.example.app \
  --platform ios --ios-distribution ad_hoc --output-upload

# iOS build uploaded to TestFlight for external groups
bunx @capgo/cli@latest build request com.example.app \
  --platform ios --ios-testflight-groups "Beta Testers"

在云中构建 --output-record build.json 添加 bunx @capgo/cli@latest build last-output --path build.json --field outputUrl 并在 CI 中读取该链接 Capgo 构建文档 列出所有选项

跳过针对 Web 变更的重建

大多数 Capacitor 应用中的更改都在 Web 层。重建和重新分发二进制文件以修复文本问题会浪费一天的 TestFlight 处理和审查时间。使用 Capgo 实时更新,测试者可以保留安装的构建,并将新的 JavaScript 包推送到测试频道:

bunx @capgo/cli@latest bundle upload --channel beta

您甚至可以为每个拉取请求分配自己的频道,让 QA 在同一安装的应用中切换它们。请参见 将每个拉取请求转换为可安装的预览.

故障排除

“无法安装”在 iOS ad hoc 中。 设备 UDID 不在配置文件中,或者配置文件已过期。请与 security cms -D -i profile.mobileprovision.

iOS 应用打开并立即关闭。 开发者模式关闭(ad hoc/开发版),或配置文件已过期。

TestFlight 构建卡在“处理中”。 等待一小时。如果失败,邮件中会列出原因,通常是缺少使用说明字符串(“”等)或图标问题。NSCameraUsageDescription TestFlight “缺乏合规性”。

在 App Store Connect 中回答出口合规性问题,或添加 到 ITSAppUsesNonExemptEncryption to Info.plist.

Android “未安装应用”。 已安装的应用版本与当前版本不同,或者 APK 未签名或损坏。卸载现有的应用。

测试者在 Play Store 中未看到应用,已选择加入。 等待几分钟,确保他们已使用邀请的帐户登录,并检查发布是否已推送到跟踪中,并且他们的国家可用。

“版本 code 已经使用过”在上传时。 升级 versionCode 在 android/app/build.gradle. 内部应用共享是例外。

推送通知不会在 TestFlight 中到达。 TestFlight 使用生产 APNs 环境。检查您的 aps-environment 推荐设置

  1. TestFlight 内部组 main.
  2. TestFlight 内部组
  3. TestFlight 内部组 beta TestFlight 内部组
  4. TestFlight 内部组 首次应用评估指南.
实时更新 Capacitor 应用

当 web 层 bug 活跃时,通过 Capgo 发送修复,而不是等待几天的 app 商店审批。用户在后台接收更新,而原生变化仍在正常审批路径中。

来自 Martin 的人性化支持

立即开始

最新博客文章

Capgo 给您需要创建真正专业的移动应用的最佳见解。