版本记录
版本号 | 时间 |
---|---|
V1.0 | 2020.11.04 星期三 |
前言
我们在做App开发的时候,开发人员开发完成以后就要交给QA进行测试了,有几种方式,一种就是将QA的测试机加到账号里面的Device里面,这个有个数限制(每种硬件类型不能超过100台,即使删除设备也不会重置),然后利用三方平台比如说蒲公英进行分发,还有一种方法就是使用TestFlight进行测试,这个专题就主要说一下App分发测试相关的内容。感兴趣的看上面几篇。
1. App的分发测试(一) —— 浅谈蒲公英平台分发测试的使用(一)
2. App的分发测试(二) —— TestFlight集成和分发测试(一)
3. App的分发测试(三) —— fastlane自动化打包并上传(一)
4. App的分发测试(四) —— fastlane自动化打包(一)
5. App的分发测试(五) —— GitHub, Fastlane & Jenkins集成(一)
6. App的分发测试(六) —— GitHub, Fastlane & Jenkins集成(二)
7. App的分发测试(七) —— TestFlight Beta测试(一)
开始
首先看下主要内容:
在本
fastlane
教程中,您将使用actions and plugins
来覆盖您的应用程序图标,上传到Firebase
并在Beta
版构建就绪后向您的团队发送消息。内容来自翻译。
下面看下写作环境:
Swift 5, iOS 14, Xcode 12
下面就是正文了
fastlane是一种工具,可自动执行您的开发和发布过程,从而节省时间,消除重复性任务并最大程度地减少人为错误。 在 fastlane Tutorial: Getting Started教程中,您学习了如何使用fastlane
完全设置,构建,测试,存档和上载应用程序到TestFlight
。
本教程基于这些技能,因此最好在继续之前先完成该教程。 在这里,您将学习如何使用其他操作和插件(actions and plugins)
将叠加层添加到Beta
版的应用程序图标,将其上传到Firebase
以供测试人员使用,以及在构建完成后如何通过Slack
向您的团队发送消息。
注意:本教程假定您具有付费的
Apple Developer
帐户,并且具有命令行,Xcode
和ad-hoc
测试过程。 如果您没有帐户,我们的教程How to Submit an App to the Apple Store将为您提供帮助。
下载材料后,将.zip
存档解压缩到计算机上方便的位置。
与第一个教程一样,您将使用一个名为mZone Poker
的示例应用程序,该应用程序是无限制德州扑克'Em锦标赛的计算器。 它通过显示基于筹码数量和您输入的当前大盲注级别的推荐操作来工作。
构建并运行以进行检查:
但是,在开始使用该应用程序之前,请花一分钟时间正确设置所有内容。
1. fastlane Configuration
您应该已经在上一教程中设置了fastlane
和Bundler,因此打开Terminal
,导航到starter project
目录并运行以下命令:
bundle install
此命令要求Bundler
安装Gemfile
中定义的所有依赖项,以便您可以执行本教程中的其余命令。
2. Signing Assets Configuration
开始之前,您需要在Xcode中设置您的signing identity
和bundle ID
。这些值是您在Apple Developer
帐户中的唯一team ID
,以及您在Apple Developer Portal的** Identifiers**部分中创建的唯一应用程序bundle identifier
。如果您遵循上一教程,则应该已经设置好。
设置帐户后,请执行以下步骤:
- 1) 从
Xcode
的起始文件夹中打开mZone Poker.xcodeproj
。 - 2) 在
Xcode
的左窗格中显示Project navigator
。 - 3) 选择顶部的
mZone Poker
项目节点。 - 4) 单击
Targets
标题下的mZone Poker
目标。 - 5) 在中间窗格中,选择
Signing & Capabilities
选项卡。 - 6) 确保已选中
Automatically Manage Signing
复选框。 - 7) 在团队
Team
下拉列表中选择您的开发团队。 - 8) 在
Bundle Identifier
字段中输入您的bundle ID
。
您可以在下图中看到在哪里执行每个步骤:
注意:如果下拉列表中没有列出您的开发团队,请尝试使用
Apple ID
登录。 为此,请转到菜单中的Xcode ▸ Preferences ▸ Accounts
。
完成上述步骤后,错误消息“Signing for mZone Poker requires a development team”
将消失,您可以开始使用。 现在,是时候开始改进您的mZone Poker
应用了。
Adding an Overlay to the App Icon
如果您的Beta
测试人员可以通过浏览应用程序图标来区分设备上的Beta
版本,该怎么办? fastlane
使这变得容易!
在此步骤中,您将设置一条通道来更新您的应用程序图标以进行Beta
版构建。 更新后的图标将包含自定义文本,使您可以轻松查看有关设备上Beta版的信息。
但是,在开始之前,请快速绕行以了解fastlane plugins
。
1. fastlane Plugins
fastlane
使用默认安装发布一组默认操作。 您可以在您的通道上使用它们,而无需进行任何其他操作。 默认操作通常是针对第一方工具(例如Xcode
或Android Studio
)的,但还有许多其他操作可为第三方工具或非必需的实用程序提供集成。
这些附加操作可作为插件使用,您可以将其与默认的快速通道安装一起安装。 安装它们后,就可以像默认操作一样轻松地在Fastfile中使用它们。
您可以通过阅读官方文档 official documentation了解有关插件工作方式的更多信息。 您可以在fastlane文档 fastlane docs中查看已发布插件的完整列表。
2. Icon Versioning Prerequisites
在开始配置fastlane
以在应用程序图标上添加叠加层之前,您需要做好一些整理工作。 您将用来覆盖图标的fastlane
插件需要ImageMagick命令行实用程序来完成其工作。 您将使用Homebrew软件包管理器进行安装。
如果尚未安装Homebrew
,请转到该站点the site并将主页上的安装脚本复制并粘贴到Terminal
会话中。 运行命令并按照屏幕上的说明完成设置。
之后,使用以下命令安装ImageMagick
:
brew install ImageMagick
在安装ImageMagick
及其所有依赖项之后,就可以设置第一个fastlane插件了!
3. Installing the Icon Versioning Plugin
要使用插件,您必须执行一些额外的步骤来安装它并使它可用于fastlane
。 您今天将使用Icon Versioning插件来更新应用程序图标。
首先,打开终端并运行以下命令:
bundle exec fastlane add_plugin fastlane-plugin-icon_versioning
由于这是您第一次向该项目添加插件,因此您将看到类似以下的输出:
这告诉您一些重要的事情:
- 1) 您已成功将插件添加到插件文件Pluginfile中。
- 2) 由于您以前从未使用过插件,因此
fastlane
需要修改Gemfile
来引用您的插件。 这是一次提示,fastlane
只是因为要确保它具有修改未创建文件的权限而显示。 该文件是您下载的材料之一。
按y
,该过程将继续:
注意:如果您看到一条消息:
Seems like this plugin is not available on RubyGems
,请选择选项3
。这将尝试从RubyGems
安装插件。
打开./fastlane/Pluginfile
。 其内容将如下所示:
# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!
gem 'fastlane-plugin-icon_versioning'
该文件是自动生成的; 您无需对其进行编辑。 它基本上是一个Gemfile
,其中列出了专门为fastlane
添加的gems
(又名插件)。
由于fastlane
在您现有的Gemfile
中添加了对该文件的引用,因此每当您再次运行bundle install
时,也会为您安装该插件(如果尚未安装)。
当使用源代码控制并与其他团队成员合作时,或者当您依赖构建服务器(还需要安装插件)时,此功能非常有用。
现在,是时候设置您的应用程序图标叠加层了!
4. Creating a Lane for Icon Overlay
打开纯文本编辑器,例如Atom或Visual Studio Code。 从入门项目的基本目录中,打开./fastlane/Fastfile
并在platform:ios do
下面添加以下代码:
desc "Overlay the app icon with build information"
lane :overlay_icon do
# 1
build_number = get_build_number
# 2
version_number = get_version_number
# 3
version_icon(
appiconset_path: "mZone Poker/Assets.xcassets/AppIcon.appiconset",
text: "beta: #{version_number} (#{build_number})"
)
end
此代码执行以下操作:
- 1) 使用内置的
get_build_number
操作检索当前的build number
。 - 2) 使用内置的
get_version_number
操作获取当前的应用程序marketing version
。 - 3) 调用
version_icon
插件的version_icon
操作,以使用覆盖在底部显示应用程序版本和build
版本号的叠加层更新应用程序图标。
现在,打开终端并运行以下命令:
bundle exec fastlane overlay_icon
您会看到一些终端输出和成功消息。 脚本完成后,请执行以下步骤来验证更改并创建叠加层:
- 1) 转到
Finder
中的项目目录。 - 2) 导航至以下路径:
mZone Poker▸Assets.xcassets▸AppIcon-Versioned.appiconset
。 这是原始图标集的副本。Icon Versioning
插件创建了此图标集作为原始图标的副本,并在此处为Beta
图标创建了覆盖图。 - 3) 选择一个文件并预览。
现在,您会在图标上看到一个叠加层,其中包含marketing version and build number
:
现在,您已经为Beta
版生成了新的App Icon
,现在该使用Fastlane
的gym来生成自己的build
了。
Creating a Build
fastlane
带有一个官方的动作库。 它们带有快速通道,您可以从任何通道调用它们。 要查看可用操作的完整列表,请查看fastlane的操作文档fastlane’s actions documentation。 Gym就是其中之一。
1. Setting up Gym to Build
您需要生成一个二进制文件,以便可以为Beta
测试人员执行上传。 您将使用gym
命令为此生成一个.ipa
文件。
在文本编辑器中打开fastlane / Fastfile
,并使用以下代码在overlay_icon
下创建一个新车道:
desc "Build beta ipa"
lane :build_beta do
# 1
enable_automatic_code_signing
# 2
gym(
export_method: "ad-hoc",
# 3
xcargs: "ASSETCATALOG_COMPILER_APPICON_NAME=AppIcon-Versioned"
)
end
这条lane
:
- 1) 启用自动代码签名
(automatic code signing)
,这意味着您不必大惊小怪的供应配置文件(provisioning profiles)
和其他代码签名设置。 - 2) 运行
gym
命令,并通过ad-hoc
发送export_method
参数值。 这将构建用于测试的应用程序。 端上与Apple Developer
帐户关联的任何设备都可以运行该应用程序。 - 3) 覆盖
ASSETCATALOG_COMPILER_APPICON_NAME
构建设置,以强制使用先前生成的AppIcon-Versioned
资源而不是Xcode
中选择的默认应用程序图标进行构建。 这是确保仅在构建Beta
版本时仅应用beta
图标的好方法。
保存Fastfile
并使用以下命令运行新lane
:
bundle exec fastlane build_beta
如果这是您第一次从fastlane
运行gym
命令,则可能会收到如下所示的代码签名提示:
如果是这样,请输入管理员密码,然后选择Always Allow
以继续。 fastlane
完成构建应用程序后,您会收到一条成功消息。 在此之上,您将看到文件在哪个文件系统中保存了您的构建。
将Finder
导航到./fastlane/builds/
目录,您将看到mZone Poker.ipa
等待您上传它。
Uploading to Firebase
下一步是使您的构建可供测试人员使用。 有几种平台可以上传ad-hoc
进行测试。 在这种情况下,您将使用Firebase。
在开始使用Firebase
之前,您需要设置一个帐户并安装本地命令行界面(CLI)
。
1. Setting up a Firebase Account
如果您还没有Firebase
帐户,请转到Firebase并设置一个。 这样一来,您就可以访问Firebase App Distribution,这是您用于分发Beta
版本的工具。
激活帐户后,下一步就是安装Firebase CLI
。
注意:许多
Firebase
功能都要求您将Firebase
框架嵌入到您的应用中,但是App Distribution
不是其中之一。 您无需使用Firebase SDK
即可分发Beta
版本。
2. Setting up the Firebase CLI
转到Firebase CLI installation page页面,然后按照说明进行设置。 配置CLI
后,请按照说明登录并运行建议的测试。
3. Setting up Your Project on Firebase
设置完工具后,该在Firebase
上创建项目和应用程序了。
项目是一个或多个应用程序的逻辑容器。 您可以在一个项目下拥有多个应用程序,并且它们都可以共享设置,测试器和其他Firebase
值。
请按照以下步骤创建您的项目:
- 1) 转到Firebase console。
- 2) 单击
Add project
选项。 - 3) 给您的项目起个名字。
- 4) 选择是否启用
Google Analytics
(分析)-本教程不需要。 - 5) 继续浏览其余屏幕,直到
Firebase
将您重定向到新创建项目的Project Overview
。
现在,您已经设置了Firebase
项目,是时候在新项目中添加应用了。
4. Setting up Your App on Firebase
在Project Overview
页面上,您会看到提示,将Firebase
添加到您的应用中。 选择圆形的iOS按钮以开始配置您的应用程序:
通过在iOS bundle ID
字段中输入您先前在Xcode
中使用的bundle identifier
来设置新应用。 将其他两个字段保留为空白,然后单击Register app
。
接下来的三个步骤选择Next
,因为您无需在此应用中配置Firebase SDK
。 完成第5步后,单击Continue to console
以返回到Project Overview
。 您会在页面顶部看到您的应用程序:
接下来,您将为mZone Poker
应用设置应用分发(App Distribution)
。
5. Setting up App Distribution
要为您新创建的应用程序设置应用程序分发,请通过单击屏幕左侧菜单中的App Distribution
项转到仪表板:
首次访问时,Firebase
会为您提供资源,以帮助您了解有关此功能的更多信息。 在这种情况下,您只需单击Get Started
即可直接跳入。
在此屏幕上,转到Testers & Groups
选项卡,然后单击Add Group
。 在此处,为新的小组beta-testers
命名,然后单击Save
。
在这里,您会看到Add testers
按钮。 单击它,键入您自己的电子邮件地址,然后按Enter
以将您自己添加为测试人员:
现在,您可以测试上传到Firebase
的所有构建。 但是,在开始上传之前,您需要从Firebase
控制台中获得另一件事:您的Firebase App ID
。
6. Finding your Firebase App ID
您需要告诉Firebase
上传应用程序的位置。 为此,您必须使用之前创建的应用程序的唯一标识符。
要在Firebase
控制台中找到此值,请单击左侧菜单中的设置齿轮,然后选择Project Settings
选项:
在General
标签中,向下滚动到Your apps
部分,然后在App ID
下查找值。
记下ID。 现在您可以开始集成插件了。
7. Setting up the Firebase App Distribution Plugin
接下来,您需要设置Firebase App Distribution
插件。 使用此工具,您可以通过操作从fastlane
上传到Firebase
。
在终端中,运行以下命令以将App Distribution
插件添加到Fastlane
安装中:
bundle exec fastlane add_plugin firebase_app_distribution
安装完插件后,您将创建下一条lane
。
8. Creating an Upload Lane
打开Fastfile
并添加以下通道,请确保将[[FIREBASE APP ID]]
替换为设置Firebase
项目时记下的App ID
:
desc "Upload to Firebase"
lane :upload_firebase do
# 1
firebase_app_distribution(
# 2
ipa_path: "./fastlane/builds/mZone Poker.ipa",
# 3
app: "[[FIREBASE APP ID]]",
groups: "beta-testers",
# 4
release_notes: "Added icon overlay and started distributing via Firebase"
)
end
这是上面的代码的作用:
- 1) 调用新添加的插件提供的
firebase_app_distribution
操作。 - 2) 告诉操作在计算机上可以找到要上传的
.ipa
的位置。 - 3) 指定要上传到的应用程序以及应该有权访问该应用程序的测试人员组。
- 4) 提供发行说明,以便您的
Beta
测试人员了解此版本中的新功能。 目前,您只是对字符串进行硬编码以使其简单。 但是,如果您使用的是Git
,则可以结合使用其他操作(例如changelog_from_git_commits)来自动为您填充发行说明。
完成所有设置后,您可能希望进行测试,因此请从Terminal
运行以下命令:
bundle exec fastlane upload_firebase
lane
结束后的几分钟,您会通过电子邮件收到邀请,以从Firebase
测试您的Beta
。 做得好! 现在,您可以在可重复的构建脚本中生成beta
。
最后一步,您将学习如何在有可用构建时向Slack
组发送消息。
Messaging Your Team on Slack
对于此步骤,您需要具有可访问工作空间的Slack帐户。
然后,您需要添加一个Incoming WebHook
,以允许Firebase
将传入消息发布到Slack
。 为此,请访问Slack App Directory
中的Incoming WebHook应用程序,然后单击Add to Slack
。 然后,您会看到配置页面:
在此页面上,从Choose a channel…
下拉列表中选择一个现有频道,或单击create a new channel
并按照以下步骤操作。 选择所需的频道后,点击Add Incoming WebHooks Integration
,您将获得一个Webhook URL
:
返回到Fastfile
并通过在您添加的最后一个lane
下输入以下代码来添加另一个新lane
:
desc "Send Slack notification for build"
lane :send_slack do
# 1
build_number = get_build_number
# 2
version_number = get_version_number
# 3
slack(
message: "App build complete for Version: #{version_number} (#{build_number})",
success: true,
payload: {
"Build Date" => Time.new.to_s,
"Built by" => 'fastlane'
},
slack_url: "[[SLACK INCOMING WEBHOOK URL]]"
)
end
不要忘记用您获得的Webhook URL
替换[[SLACK INCOMING WEBHOOK URL]]
。
该lane
执行以下操作:
- 1) 使用内置的
get_build_number
操作检索当前的build number
。 - 2) 使用内置的
get_version_number
操作获取当前的应用程序marketing version
。 - 3) 运行
slack
操作以将消息与构建通知一起发布到您的Slack
工作空间。
该操作接收以下值:
- message:要发布的消息,它使用步骤1和2中的
build number and marketing version
。 - success:指示构建成功的布尔值。
- payload:要传递的其他消息数据。 必须包含键和值的哈希。 在这种情况下,您要传递构建时间和
Building by
属性。 - slack_url:您的传入
Webhook URL
。
通过从终端运行以下命令来测试新lane
:
bundle exec fastlane send_slack
您会在Slack
的#test
频道中收到一条通知:
此操作有大量的自定义选项。 如果您想了解Slack
操作可用的所有参数,请查阅fastlane documentation。
Putting It All Together
现在,您可以将新操作组合到一个lane
中。 在send_slack
下,添加以下内容:
desc "Create and distribute a beta build"
lane :beta do
increment_build_number
overlay_icon
build_beta
upload_firebase
send_slack
end
唯一新的是increment_build_number
。 此内置操作采用现有的build number
,将其递增1
,然后将其保存在CFBundleVersion
键下的Info.plist
中。
唯一的内部版本号标识提交到App Store
的每个二进制文件以及您使用的任何测试服务。 该lane
的其余部分将您在本教程中构建的操作串在一起。
要测试完整的实现,请在终端中运行以下命令:
bundle exec fastlane beta
在本教程中,您学习了如何准备和构建用于Beta
测试的二进制文件,更新应用程序图标以显示构建信息,将测试构建上传到Firebase
以及在准备就绪时通过Slack
向团队发送通知消息。
还可以通过fastlane
和fastlane
插件执行更多操作。 要进一步提高您的fastlane
技能,请查看所有可用的操作和插件,然后尝试其他操作和插件!
如果找不到满足您需求的产品,请考虑building your own并为社区做出贡献。
有关更多深入的教程,请查看我们的课程,fastlane for iOS。 有关使用Submitting Your App With fastlane, Taking Screenshots 和 App Provisioning也有截屏视频。
后记
本篇主要讲述了
fastlane
教程之Actions and Plugins
,感兴趣的给个赞或者关注~~~