1. 准备工作
在此 Codelab 中,您将学习如何使用 Firebase App Distribution 及其 Fastlane 插件将 iOS 应用分发给测试人员、收集测试设备 UDID,并将它们注册到应用的预配配置文件中,以便临时 build 快速提供给测试人员的双手。
学习内容
- 如何使用 Firebase App Distribution 和 Fastlane 上传预发布的 iOS 应用(临时)并将其分发给测试人员。
- 如何注册成为测试人员,并在测试设备上下载已分发的应用。
- 如何使用应用分发的 fastlane 插件导出测试设备 UDID,从而快速注册测试设备。
- 如何更新应用的预配配置文件并重新上传以进行分发。
您需要满足的条件
- Google 账号
- 安装了 Xcode 11.7 或更高版本的 Apple 计算机
- 在 Xcode 中构建的临时发布 iOS 应用
- 付费的 Apple 开发者账号
- 一台用于测试的 iOS 实体设备。
iOS 模拟器应用适用于大多数 Codelab,但模拟器无法下载版本。
您仍然可以通过验证“下载”按钮。
2. 开始使用
设置 Fastlane
App Distribution 与 fastlane 集成,可让您自动分发应用的预发布 build。App Distribution 会与您的 fastlane 配置集成。
- 安装并设置 fastlane。
- 在设置过程中,在项目的根目录中运行
fastlane init
,然后选择“手动设置”。您将看到一个名为fastlane
的子目录,其中包含Fastfile
、Appfile
和Pluginfile
,您将使用它们来配置 Fastlane。
安装 Firebase CLI
您还需要安装 Firebase CLI。如果您使用的是 macOS 或 Linux,则可以运行以下 c网址 命令:
curl -sL https://firebase.tools | bash
如果您使用的是 Windows,请阅读安装说明,以获取独立的二进制文件或通过 npm
进行安装。
安装 CLI 后,运行 firebase --version
应会报告 12.0.0
或更高版本:
$ firebase --version 12.0.0
3. 使用 fastlane 构建应用
构建应用
- 在
./fastlane/Appfile.
中为 Fastlane 设置一些全局变量,包括应用 ID 和 Apple ID:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- 将以下内容添加到
./fastlane/Fastfile
,以创建您的第一条通道,并使用 Fastlane 的build_app
操作(也称为gym
)构建应用:
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- 为您的应用签名以进行分发。
在此 Codelab 中,您将使用 get_certificates
(也称为 cert
)管理自己的认证和配置文件。get_certificates
会在本地生成签名证书,并将所有内容存储在 macOS 钥匙串中。不过,通常情况下,您需要使用 fastlane sync_code_signing action
(也称为 match
)来安全地管理团队的代码签名证书和配置文件。
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- 使用
get_provisioning_profile
操作(也称为sigh
)为您的应用设置预配配置文件。这样,您就可以与测试人员分享您的应用。
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [可选] 如果您以前从未运行过应用,请运行以下命令,在 Apple Developer Console 中创建应用:
$ fastlane produce --skip_itc
- 最后,运行车道以构建应用。
系统会提示您输入 Apple ID、密码(存储在钥匙串中)和应用的软件包 ID。
$ fastlane build
如果您遇到任何问题,请参阅快车道问题排查指南。
4. 将您的应用上传到 Firebase
现在,您已构建应用,可以将其上传到 App Distribution 了。
创建和设置 Firebase 项目
- 登录 Firebase。
- 在 Firebase 控制台中,创建或添加一个新项目,然后将项目命名为“UDID Export Codelab”。
您无需为此项目启用 Google Analytics。
- 点击 Create project。
将您的 iOS 应用添加到项目
- 点击 iOS 图标以创建新的 Firebase iOS 应用,然后输入应用的软件包 ID。
- 跳过接下来的几个步骤,然后点击继续前往控制台。稍后,您需要将 SDK 添加到您的应用中。
您的项目和应用现在会显示在 Project Overview 页面中。
启用 App Distribution
- 在“发布和监控”部分下,点击应用分发。
- 接受条款后,点击“开始”为您的应用启用 App Distribution。
在 Fastlane 中设置分发
- 从 iOS 项目的根目录运行以下命令,将 App Distribution 添加到您的 Fastlane 配置中。
如果该命令提示您选择某个选项,请选择 Option 3: RubyGems.org:
$ fastlane add_plugin firebase_app_distribution
- 确认已安装该插件:
$ fastlane
输出应在已安装插件列表中显示 fastlane-plugin-firebase_app_distribution
。
- 确认插件已安装后,选择选项 0 以取消。
对您的 Firebase 项目进行身份验证
如需使用 Fastlane 插件,您首先需要对 Firebase 项目进行身份验证。
- 运行以下命令,将 CLI 关联到您的 Google 账号:
$ firebase login
- 当该命令输出身份验证链接时,请在浏览器中打开该链接。
- 出现提示时,登录您的 Google 账号并授予访问您的 Firebase 项目的权限。
分发应用
现在,您可以分发应用了。
- 在
./fastlane/Fastfile
顶部,定义一个名为firebase_app_id
的变量。将<your_app_id>
替换为您创建的应用的 Firebase 应用 ID(可在项目设置页面中找到)。
Fastfile
是用 Ruby 编写的,因此请使用 Ruby 语法定义变量。
firebase_app_id = "<your_app_id>"
- 添加一个名为
distribute
的新通道,用于调用构建通道,然后使用firebase_app_distribution
操作分发应用。
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- 运行新通道以构建应用并创建分发。
$ fastlane distribute
此时,您的 Fastfile 应如下所示:
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
刷新 Firebase 控制台后,您会看到应用的新版本。
5. 邀请测试人员下载您的应用
当测试人员接受邀请来测试临时 build 时,系统会询问他们是否同意分享其 UDID。如果他们同意,App Distribution 会收集其设备信息,并通过电子邮件通知您。在本部分中,您将将自己添加为测试人员,以便下载和测试您分发的应用。
将您自己添加为此版本的测试人员
- 在 Fastfile 顶部的
firebase_app_id
下,创建一个变量来保留测试人员,并添加您自己的电子邮件地址,以及您想尝试的其他可选电子邮件地址。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- 应用 Ruby 的 Array#join 方法,将
app_testers
数组转换为testers
参数所需的逗号分隔字符串。然后,将结果传递给firebase_app_distribution.
的testers
形参
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
此时,您的 Fastfile 应如下所示:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- 再次跑上车道。
$ fastlane distribute
您启动测试车道后,您添加的测试人员会收到 App Distribution 发送的邀请电子邮件,告知他们有新版本可用。现在,您可以在 Firebase 控制台中查看您在应用版本下添加的测试人员。
由于您添加了自己的电子邮件地址,因此会收到 Firebase App Distribution 邀请您测试该应用的电子邮件。您现在是首位测试人员了!继续下一部分,在测试设备上设置为测试人员。
注册测试设备
作为测试人员,您需要在测试设备上登录 Google,才能访问您受邀参与测试的应用版本。由于您的测试 build 是临时版本,因此您还需要安装 Firebase 配置文件来注册测试设备。之后,您可以通过添加到设备主屏幕的 Web 片段,从 App Distribution 测试人员 Web 应用访问可供您使用的版本。
- 在您的 iOS 测试设备上,打开 Firebase App Distribution 发送的电子邮件,然后点按开始使用链接。请务必在 Safari 中打开该链接。
- 您现在进入了 App Distribution 测试人员 Web 应用。在随即显示的页面中,使用您的 Google 账号登录,然后点按接受邀请。
- 你现在可以查看受邀加入的专辑了。点按某个版本下方的注册设备。
- 出现提示时,下载 Firebase 配置文件,然后在“设置”应用中安装该配置文件。
安装该配置文件可让 Firebase 执行以下操作:
- 通过收集设备的唯一设备 ID (UDID) 来注册测试设备。
Firebase 会向 Firebase 项目的所有 Owner 和 Editor 发送一封电子邮件,其中包含测试设备的 UDID。
- 在测试设备的主屏幕上安装一个 Web Clip。Web Clip 会打开 App Distribution 测试人员 Web 应用,供您安装和访问所有测试应用。
在 App Distribution 测试人员 Web 应用中,您的测试设备现已注册应用发布版本。
现在,您已将测试设备的 UDID 分享给 Firebase,接下来可以继续以开发者的身份操作了。在 App Distribution 信息中心的测试人员标签页中,您的测试人员信息现在会显示在应用的版本下,状态为“已接受”:
在下一部分中,您需要将设备 UDID 添加到应用的预配配置文件中,然后构建适用于测试设备的应用版本。
导出测试人员设备 UDID
作为开发者,您将收到一封 Firebase 发来的电子邮件,其中包含测试设备的 UDID。作为一个选项,App Distribution 可让您直接从 Firebase 控制台将多个新设备 UDID 导出为原始文本文件,从而轻松地同时收集多个新设备 UDID。
- 要导出所有 UDID,请打开测试人员和群组标签页。
- 点击导出 Apple UDID。
该文件应包含测试设备的 UDID。
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
您也可以使用 Fastlane 从命令行导出 UDID,您将在下一部分中执行此操作。
6. 更新应用的预配配置文件并重新构建它
现在,您需要将测试设备 UDID 添加到应用的配置配置文件中,重新构建适用于您设备的应用版本,然后分发新版本。
添加 UDID 导出通道
- 在 Fastfile 的顶部再添加一个变量,并将其设置为测试人员系统将下载设备 UDID。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- 设置一个新车道,使用 App Distribution 插件中的 UDID 导出操作下载测试人员 UDID,就像您在控制台中执行的操作一样。
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- 运行以下通道以下载 UDID。
$ fastlane download_udids
- 打印下载的文件,其中应包含测试设备 UDID。
$ cat tester_udids.txt
将设备添加到 Apple 开发者控制台
- 创建以下车道,将 UDID 添加到 Apple 开发者控制台中的设备列表,以便您使用 fastlane 的
register_devices
操作将其添加到配置文件中:
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- 然后,运行车道:
$ fastlane add_new_devices
然后,您应该会在开发者控制台的设备列表中看到新设备。
将设备添加到您的配置文件
- 将
force
参数添加到build
通道的配置文件步骤中,以强制在您每次构建时都选择新设备。
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
重新运行车道以进行构建和上传
现在,您将使用新通道更新 distribute
通道,以便将设备添加到配置文件,重新构建应用,然后分发应用。
- 从
distribute
调用新车道:
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
- 运行
distribute
通道:
$ fastlane distribute
此时,您的 Fastfile 应如下所示:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
从测试设备下载该版本
现在,您的应用包含测试设备 UDID,可以安装到测试设备上。
- 在测试设备上,使用电子邮件中的链接或设备主屏幕上的图标返回 App Distribution 测试人员 Web 应用。
当您前往 UDID Codelab 应用时,您会看到该版本已可供下载。
- 如果您使用的是实体设备,请按“下载”,然后安装并运行应用!
7. 恭喜
现在,您已配置 App Distribution 和 Fastlane 来自动执行预发布测试流程。现在,当您想要邀请其他测试人员,或将他们的 UDID 添加到您的应用时,您只需运行一条命令:fastlane distribute
。
这样,您就不必再单独从测试人员那里收集 UDID,也不必再前往 Apple 开发者控制台更新设备列表或配置文件。您甚至无需打开 XCode!
此工作流可轻松设置为在您的持续集成环境中每小时或每天运行。
深入阅读
- 探索 Firebase App Distribution 的功能,包括我们的 iOS 版应用内 SDK
- 详细了解 fastlane
- 使用
match
管理您团队的代码签名 - 将 Fastlane 集成到 CI 中