使用 App Distribution 和 fastlane 更快地分发您的预发布 iOS 版本

1. 开始之前

4cddd34bd261cea0.png

在此 Codelab 中,您将学习如何使用Firebase App Distribution及其fastlane插件将 iOS 应用分发给测试人员,收集测试设备 UDID,并将它们注册到您应用的配置文件中,这样您就可以快速将 Ad Hoc 构建到测试人员中' 手。

你会学到什么

  • 如何使用 Firebase App Distribution 和fastlane上传预发布 iOS 应用程序 (Ad Hoc) 并将其分发给测试人员。
  • 如何注册成为测试人员并在测试设备上下载分布式应用程序。
  • 如何通过使用 App Distribution 的fastlane插件导出测试设备 UDID 来快速注册测试设备。
  • 如何更新应用程序的配置文件并重新上传以进行分发。

你需要什么

  • 一个谷歌账户
  • 安装了XCode 11.7+ 的 Apple 机器
  • 在 Xcode 中构建的 Ad Hoc 预发布 iOS 应用程序
  • 付费的Apple 开发者帐户
  • 用于测试的物理 iOS 设备。

iOS 模拟器应用适用于大部分代码实验室,但模拟器无法下载版本。

您仍然可以通过验证 App Distribution 测试器 Web 应用程序上是否显示“下载”按钮来验证设置是否有效。

2. 开始

设置快车道

App Distribution 与fastlane集成,使您能够自动分发应用程序的预发布版本。 App Distribution 与您的fastlane配置集成。

  1. 安装并设置fastlane
  2. 安装期间在项目的根目录中运行fastlane init ,然后选择“手动设置”。您会看到一个名为fastlane的子目录,其中包含FastfileAppfilePluginfile ,您将使用它们来配置fastlane

安装 Firebase CLI

您还需要安装Firebase CLI 。如果您使用的是 macOS 或 Linux,则可以运行以下 cURL 命令:

curl -sL https://firebase.tools | bash

如果您使用的是 Windows,请阅读安装说明以获取独立的二进制文件或通过npm安装。

安装 CLI 后,运行firebase --version应该会报告12.0.0或更高版本:

$ firebase --version
12.0.0

3. 使用 fastlane 构建您的应用

构建您的应用

  1. 在 ./fastlane/Appfile 中为fastlane设置一些全局变量./fastlane/Appfile.包括您的应用 ID 和您的 Apple ID:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. 创建您的第一个车道并使用fastlane 的build_app操作(也称为gym )通过将以下内容添加到您的./fastlane/Fastfile来构建您的应用程序:
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. 签署您的应用程序以进行分发。

对于此 Codelab,您将使用get_certificates (也称为cert )管理您自己的证书和配置文件,它会在本地生成签名证书并将所有内容存储在您的 macOS Keychain 中。但是,通常情况下,您会希望使用fastlane sync_code_signing action (也称为match )来安全地管理您团队的代码签名证书和配置文件。

lane :build do
    get_certificates()
    build_app(export_method: "ad-hoc")
end
  1. 使用get_provisioning_profile操作(也称为sigh )为您的应用程序设置配置文件。这允许您与测试人员共享您的应用程序。
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end
  1. [可选] 如果您以前从未运行过您的应用程序,请运行以下命令在 Apple 开发人员控制台中创建您的应用程序:

$ fastlane produce --skip_itc

  1. 最后,通过运行 lane 构建您的应用程序。

系统将提示您输入 Apple ID、密码(存储在您的钥匙串中)和应用程序的捆绑包 ID。

$ fastlane build

如果遇到任何问题,请参阅fastlane故障排除指南

4. 将您的应用上传到 Firebase

现在您已经构建了您的应用程序,您已准备好将其上传到 App Distribution。

创建和设置 Firebase 项目

  1. 登录 Firebase。
  2. Firebase 控制台中,创建或添加一个新项目,然后将您的项目命名为“UDID Export Codelab”。

您不需要为此项目启用 Google Analytics。

  1. 单击创建项目

将您的 iOS 应用程序添加到项目中

  1. 单击 iOS 图标以创建一个新的 Firebase iOS 应用程序,然后输入您的应用程序的 bundle ID。

9c26c130a6c42212.png

  1. 跳过接下来的几个步骤,然后单击Continue to console 。稍后您将向您的应用程序添加 SDK。

您的项目和应用程序现在可在“项目概述”页面中使用。

66f79cc8a97fa8e9.png

启用应用分发

  1. 在 Release & Monitor 部分下,单击App Distribution
  2. 接受条款后,单击“开始”为您的应用启用应用分发。

460213326c2784ae.png

fastlane中设置分布

  1. 从您的 iOS 项目的根目录运行以下命令,将 App Distribution 添加到您的fastlane配置。

如果命令提示您一个选项,请选择选项 3:RubyGems.org

$ fastlane add_plugin firebase_app_distribution

  1. 确认插件已安装:

$ fastlane

输出应在已安装插件列表中显示fastlane-plugin-firebase_app_distribution

  1. 确认插件安装后,选择选项0取消。

验证您的 Firebase 项目

要使用fastlane插件,您首先需要验证您的 Firebase 项目。

  1. 运行以下命令将 CLI 连接到您的 Google 帐户:

$ firebase login

  1. 当命令打印身份验证链接时,在浏览器中打开该链接。
  2. 出现提示时,登录您的 Google 帐户并授予访问您的 Firebase 项目的权限。

分发您的应用

您现在已准备好分发您的应用程序。

  1. ./fastlane/Fastfile的顶部,定义一个名为firebase_app_id的变量。将<your_app_id>替换为您创建的应用程序的 Firebase 应用程序 ID(可以在项目设置页面中找到)。

Fastfile是用 Ruby 编写的,因此使用 Ruby 语法来定义变量。

firebase_app_id = "<your_app_id>"
  1. 添加一个名为distribute的新通道来调用构建通道,然后使用firebase_app_distribution操作分发您的应用程序。
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end
  1. 运行新通道以构建您的应用程序并创建分发。

$ 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 控制台后,您会看到应用的新版本。

c59dc1a94de3bf3c.png

5. 邀请测试人员下载您的应用

当测试人员接受测试 Ad Hoc 构建的邀请时,他们会被要求获得共享其 UDID 的权限。如果他们同意,App Distribution 会收集他们的设备信息并通过电子邮件通知您。在本节中,您将自己添加为测试人员以下载和测试您分发的应用程序。

将自己添加为发布的测试人员

  1. 在 Fastfile 顶部的firebase_app_id下,创建一个变量来保存测试人员并包含您自己的电子邮件地址,以及您想要尝试的其他可选电子邮件地址。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
  1. 应用 Ruby 的Array#join方法将app_testers数组转换为逗号分隔的字符串,这是testers参数所期望的。然后,将结果传递给 firebase_app_distribution 的testers参数firebase_app_distribution.
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
  1. 再次运行车道。

$ fastlane distribute

运行通道后,您添加的测试人员将收到一封来自 App Distribution 的邀请电子邮件,通知他们新的可用版本。在 Firebase 控制台中,您现在可以看到您在应用版本下添加的测试人员。

2e0fc9603b868af8.png

由于您提供了电子邮件地址,因此您会收到一封来自 Firebase App Distribution 的电子邮件,邀请您测试该应用程序。你现在是第一个测试者!继续下面的部分以在您的测试设备上设置为测试仪。

注册您的测试设备

作为测试人员,您需要在测试设备上登录 Google 才能访问您受邀测试的应用版本。由于您的测试版本是 Ad Hoc 版本,因此您还需要通过安装 Firebase 配置文件来注册您的测试设备。之后,您可以使用添加到设备主屏幕的 Web 剪辑从 App Distribution 测试器 Web 应用程序访问可供您使用的版本。

  1. 在您的 iOS 测试设备上,打开从 Firebase App Distribution 发送的电子邮件,然后点击开始链接。确保在 Safari 中打开链接。
  2. 您现在位于 App Distribution 测试器 Web 应用程序中。在出现的页面中,使用您的 Google 帐户登录并点击接受邀请。

d833407de251b89f.png

  1. 您现在可以查看您受邀参加的发布。点击其中一个版本下的注册设备

fd141215e54a938d.png

  1. 出现提示时,下载 Firebase 配置文件,然后在“设置”应用中安装配置文件。

安装配置文件会授予 Firebase 权限:

  • 通过收集设备的唯一设备 ID (UDID) 来注册测试设备。

Firebase 向 Firebase 项目的所有所有者和编辑者发送一封电子邮件,其中包含测试设备的 UDID。

  • 将网络剪辑安装到测试设备的主屏幕。 Web 剪辑打开 App Distribution 测试器 Web 应用程序,它允许您安装和访问所有测试应用程序。

在 App Distribution 测试器网络应用程序中,您的测试设备现在已注册您的应用程序版本。

fe93d649dfa25877.png

现在您已将测试设备的 UDID 共享给 Firebase,您现在可以继续作为开发人员。在App Distribution 仪表板Testers 选项卡中,您的测试人员信息现在显示在您的应用程序版本下,状态为“已接受”:

7b9f665a63a384cf.png

在下一节中,您将把设备 UDID 添加到您的应用程序的配置文件中,然后构建一个适用于您的测试设备的应用程序版本。

导出您的测试仪设备 UDID

作为开发人员,您会收到一封来自 Firebase 的电子邮件,其中包含测试设备的 UDID。作为一个选项,App Distribution 允许您直接从 Firebase 控制台将它们导出为原始文本文件,从而可以轻松地一次收集多个新设备的 UDID。

  1. 要导出所有 UDID,请打开测试人员和组选项卡。

241a9936898a2fc0.png

  1. 单击导出 Apple UDID

bcf0c26c522d9b4e.png

该文件应包含您的测试设备的 UDID。

Device ID            Device Name                            Device Platform
1234567890     udid.codelab.tester@gmail.com - iPhone SE 2nd Gen        ios

UDID 也可以使用fastlane从命令行导出,您将在下一节中执行此操作。

6. 更新您应用的配置文件并重建它

现在,您需要将测试设备的 UDID 添加到应用的配置文件中,重建适用于您设备的应用版本,然后分发新版本。

添加UDID导出通道

  1. 在 Fastfile 的顶部添加另一个变量,并将其设置为将下载测试人员设备 UDID 的文件路径。
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"
  1. 设置一个新通道,使用 App Distribution 插件的 UDID 导出操作来下载测试器 UDID,就像您从控制台所做的那样。
lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end
  1. 运行以下通道以下载 UDID。

$ fastlane download_udids

  1. 打印下载的文件,其中应包含测试设备的 UDID。

$ cat tester_udids.txt

设备添加到 Apple 开发人员控制台

  1. 创建以下通道以将 UDID 添加到 Apple 开发人员控制台中的设备列表中,这样您就可以使用fastlane 的register_devices操作将它们添加到您的配置文件中:
lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end
  1. 然后,运行车道:

$ fastlane add_new_devices

然后,您应该会在开发人员控制台的设备列表中看到新设备。

将设备添加到您的配置文件

  1. force参数添加到build通道中的配置文件步骤,以便在每次构建时强制它选择新设备。
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

重新运行 lane 以构建和上传

现在,您将使用新通道更新您的distribute通道,以便将设备添加到配置文件、重新构建应用程序,然后分发它。

  1. 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
  1. 运行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,可以将它们安装到测试设备上。

e275f73d57cc8fb1.png

  1. 在您的测试设备上,使用电子邮件中的链接或设备主屏幕上的图标返回 App Distribution 测试器 Web 应用程序。

当您导航到 UDID Codelab 应用程序时,您可以看到该版本已准备好下载。

dad6d03b6ad78746.png

  1. 如果您使用的是物理设备,请按下载,然后安装并运行该应用程序!

7. 恭喜

您现在已经配置了 App Distribution 和fastlane来自动化您的预发布测试过程。现在,当您想邀请其他测试人员或将他们的 UDID 添加到您的应用程序时,您只需要运行一个命令: fastlane distribute

因此,无需再从测试人员那里单独收集 UDID,也无需前往 Apple 开发者控制台更新设备列表或配置文件。您甚至不需要打开 XCode!

此工作流很容易设置为在您的持续集成环境中每小时或每天运行一次。

延伸阅读