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,但模拟器无法下载版本。
您仍然可以通过验证“App Distribution”测试人员 Web 应用中是否显示“下载”按钮,来验证设置是否有效。
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 的
build_app
操作(也称为gym
)构建应用,方法是将以下内容添加到./fastlane/Fastfile
:
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 开发者控制台中创建应用:
$ 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 添加到应用中。
您的项目和应用现在会显示在项目概览页面中。
启用 App Distribution
- 在“发布和监控”部分下,点击应用分发。
- 接受条款后,点击“开始使用”即可为您的应用启用 App Distribution。
在 fastlane 中设置分发
- 从 iOS 项目的根目录运行以下命令,将“应用分发”添加到您的 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
的新车道,用于调用 build 车道,然后使用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 发送的电子邮件,然后点按 Get Started(开始)链接。请务必在 Safari 中打开链接。
- 您现在进入了 App Distribution 测试人员 Web 应用。在随即显示的页面中,使用您的 Google 账号登录,然后点按接受邀请。
- 现在,您可以查看自己受邀参与的版本。点按某个版本下的注册设备。
- 看到提示时,下载 Firebase 配置文件,然后在“设置”应用中安装该配置文件。
安装该配置文件可让 Firebase 执行以下操作:
- 通过收集设备的唯一设备 ID (UDID) 来注册测试设备。
Firebase 会向 Firebase 项目的所有所有者和编辑者发送一封电子邮件,其中包含测试设备的 UDID。
- 在测试设备的主屏幕上安装 Web 片段。Web Clip 会打开 App Distribution 测试人员 Web 应用,您可以通过该应用安装和访问您的所有测试应用。
在 App Distribution 测试人员 Web 应用中,您的测试设备现已注册为应用的版本。
现在,您已将测试设备的 UDID 分享给 Firebase,接下来可以继续以开发者的身份操作了。在 App Distribution 信息中心的测试人员标签页中,您的测试人员信息现在会显示在应用的版本下,状态为“已接受”:
在下一部分中,您将向应用的预配配置文件添加设备 UDID,然后构建适用于测试设备的应用版本。
导出测试人员设备 UDID
作为开发者,您会收到 Firebase 发送的电子邮件,其中包含测试设备的 UDID。作为一种选项,“应用分发”可让您直接从 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 导出 lane
- 在 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
- 运行以下 lane 以下载 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 中