版本记录
版本号 | 时间 |
---|---|
V1.0 | 2019.03.02 星期六 |
前言
我们在做App开发的时候,开发人员开发完成以后就要交给QA进行测试了,有几种方式,一种就是将QA的测试机加到账号里面的Device里面,这个有个数限制(每种硬件类型不能超过100台,即使删除设备也不会重置),然后利用三方平台比如说蒲公英进行分发,还有一种方法就是使用TestFlight进行测试,这个专题就主要说一下App分发测试相关的内容。感兴趣的看上面几篇。
1. App的分发测试(一) —— 浅谈蒲公英平台分发测试的使用(一)
2. App的分发测试(二) —— TestFlight集成和分发测试(一)
3. App的分发测试(三) —— fastlane自动化打包并上传(一)
开始
首先看下写作环境
Other, macOS 10.14, Other
这是一个美妙的时刻:你已经花了几天,几周甚至几个月来构建应用程序,它终于准备好与世界分享。您所要做的就是将其提交到App Store。这有多难,对吧?
提示大量的工作:捕获大量的屏幕截图,将您的应用程序添加到Apple Developer
和App Store Connect
网站,上传您的二进制文件和元数据以及其他无意识的工作!哎呀!
有没有更好的方法?如果只有您可以运行单个命令,在所有支持的设备上截取所有屏幕截图,则自动使用每种受支持的语言。如果只有一个命令来上传这些屏幕截图,请将您的应用添加到Apple的开发者网站并提交所有内容。想想你所节省的所有时间!
嗯,你很幸运。感谢创作者Felix Krause和主要维护者Josh Holtz,有一个工具可以完成所有这些以及更多!它被称为fastlane!在本教程中,您将学习如何使用fastlane将应用程序部署到App Store。它一定会成为你最好的新朋友,即使谷歌在2017年通过收购fastlane也与他们建立了关系 acquiring it in 2017。
注意:本教程假设您拥有付费
Apple Developer
帐户,以及命令行,Xcode和应用程序提交过程的基本知识。
首先,使用本教程的示例应用程序mZone Poker
是No Limit Texas Hold'Em
锦标赛的扑克计算器。 它会根据您的筹码数量和当前的大盲注级别显示建议的操作。
在Xcode中打开mZone
项目来构建,运行并检查它。
Setting Up fastlane
fastlane
工具是Ruby
脚本的集合,因此您必须安装正确版本的Ruby。 您的操作系统默认情况下可能会附带Ruby 2.0
,但您可以通过打开终端并输入以下内容来确认是否属于这种情况:
ruby -v
如果没有安装,最简单的方法是通过Homebrew为macOS打包管理器。
输入此Terminal
命令安装Homebrew
:
/usr/bin/ruby -e \
"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后,安装Ruby
使用:
brew update && brew install ruby
运行brew link --overwrite ruby
,如果Homebrew
指示您这样做,则打开一个新的终端会话。
您还需要Xcode Command Line Tools (CLT)
。 要确保它们已安装,请进入终端:
xcode-select --install
如果已安装Xcode CLT
,您将收到以下错误:xcode-select: error: command line tools are already installed, use "Software Update" to install updates
。 如果没有,请在出现提示时继续安装。
现在你已准备好安装fastlane
! 输入以下命令:
sudo gem install -n /usr/local/bin fastlane --verbose
如果您更喜欢使用Homebrew
,请输入以下命令:
brew cask install fastlane
注意:使用
El Capitan
,OS X引入了系统完整性保护(System Integrity Protection)(也称为Rootless
),可防止用户具有root访问权限。/ usr / local / bin
仍然是可写的,这就是你在那里安装fastlane的原因。
输入系统密码后,您将在终端中看到一系列活动,表明安装正在进行中。 这可能需要几分钟时间,所以可以喝点咖啡,遛狗或者刷你的僵尸战术。
安装完成后,您就可以在项目中设置fastlane了。 但在此之前,这里是对fastlane工具的高级别介绍。
The fastlane Toolchain
为了发挥其魔力,fastlane
将以下一套工具集中在一起:
-
produce在
App Store Connect
和Apple Developer Portal
中创建新的iOS应用程序。 - cert自动创建和维护iOS代码签名证书。
- sigh创建,更新,下载和修复配置文件。
- snapshot可自动在每台设备上获取iOS应用的本地化屏幕截图。
- frameit将您的屏幕截图放入正确的设备框架中。
- gym构建并打包您的iOS应用程序。
- deliver将截图,元数据和您的应用程序上传到App Store。
- pem会自动生成并更新您的推送通知配置文件。
-
spaceship是一个
Ruby
库,可以访问Apple Developer Center
和App Store Connect API
。 -
pilot自动化
TestFlight
部署并管理beta测试人员。 - boarding邀请beta测试人员。
- match使用Git匹配整个团队中的同步证书和配置文件。
- scan会对您的应用运行测试。
您今天将使用其中的几种工具。现在已经足够理论了 - 现在是时候把这个教程付诸实践并进入快车道了!
Adding fastlane to Your Project
打开终端并cd
到mZone
启动项目。 例如,如果您已将mZone_Sample_Project
文件夹添加到桌面,则可以输入:
cd ~/Desktop/mZone_Sample_Project/mZone
将mZone starter
项目设置为工作目录。
接下来,输入:
fastlane init
要初始化fastlane
注意:如果出现
permission denied
错误,请在此命令前加上sudo
。如果在任何时候,
fastlane
告诉你更新到最新的版本,但运行sudo gem update fastlane
输出Nothing to update
,也许你正在使用的Ruby管理器不是最新的。 运行gem sources --add https://rubygems.org/
来安装Ruby Gems
,因为它可能会生成最新的信息。
经过一些输出后,fastlane会问:What would you like to use fastlane for?
虽然fastlane recommend[s] automating one task first
,但在本单一教程中您将实施多项自动操作,因此输入4
以开始手动设置。 读取输出并在出现提示时按Enter键。
回到mZone
文件夹,你会看到一些新东西:Gemfile
,它包含fastlane gem
作为项目依赖项和fastlane
文件夹,包含:
-
Appfile:存储应用程序标识符,
Apple ID
以及fastlane设置应用程序所需的任何其他标识信息。 - Fastfile:管理您将创建的用于调用fastlane操作的通道。
在您选择的文本编辑器中打开Fastfile
,如果文本编辑器支持智能引号,则禁用智能引号,然后用以下内容替换文件内容:
default_platform(:ios)
platform :ios do
# 1
desc "Create app on Apple Developer and App Store Connect sites"
# 2
lane :create_app do
# 3
produce
end
end
如果你以前从未见过Ruby,这对你来说可能就像是胡言乱语。 这是代码的作用:
- 1) 提供通道lane的描述。 (lane是顺序任务的工作流程)。
- 2) 将此通道命名为
create_app
。 - 3) 使用
produce
将应用程序添加到Developer Portal
和App Store Connect
。
哇噢! 你现在已经创建了你的第一条lane
。
保存Fastfile
,然后打开Appfile
。 删除井号(#)
以取消注释以apple_id
开头的行,然后将[[APPLE_ID]]
替换为您的实际Apple ID
用户名。 通过立即设置此信息,fastlane将不必在以后反复提示您。
注意:如果您的
App Store Connect
和Apple Developer Portal
用户名不同,请将apple_id
行替换为:
apple_dev_portal_id("[[APPLE_DEVELOPER_ACCOUNT_USERNAME]]")
itunes_connect_id("[[APP_STORE_CONNECT_ACCOUNT_USERNAME]]")
然后用各自的用户名替换每个用户名占位符。
关闭前保存Appfile
。
1. Creating Your App
在项目文件夹中打开终端并输入:
fastlane create_app
这将运行您刚刚创建的create_app
通道。
你应该看到这样的东西:
在输出的顶部,fastlane
建议你在fastlane命令之前加上“bundle exec”
,以便在gem
包的上下文中更快地启动fastlane
。 展望未来,你可以这样做。
如果出现提示,请输入App Store Connect
密码。 如果您的Developer Portal
有多个团队,请输入与您要用于mZone Poker
应用程序的团队相对应的编号。
最终,产品将要求您输入您的bundle ID
。 是时候创造了一个!
bundle identifier
必须与App Store Connect
中曾经使用过的任何其他bundle identifier
不同。 尝试使用以下格式输入唯一的包标识符:
com.mZone-Poker.[Insert your email address minus “@” and “.”]
如果已经使用了bundle identifier
,请对其进行编辑并重试,直到您提交了唯一ID。
然后,当系统提示您提交应用名称时,它也必须是唯一的。 尝试使用以下格式:
mZone Poker [Insert your email address minus “@” and “.”]
但是,应用程序名称不能超过30个字符,因此必要时会截断。
如果您的App Store Connect
帐户有多个团队,请输入与您要使用的团队相对应的编号。
如果您收到任何错误,指出您的Apple Developer帐户存在问题(例如,如果您需要接受新的程序协议),请更正问题,然后再次produce
产品。
如果应用程序名称不可用,则该过程将以错误结束。 再次运行produce
,重新输入您的Apple ID
和您刚创建的相同Bundle ID
,然后展开您的创意肌肉以创建唯一ID或返回到此段落的顶部并重复。 我们知道,令人沮丧,但我们相信你会打破无限循环!
登录Apple Developer Center
和App Store Connect
。瞧! 您的应用已添加到两者中。 多么酷啊?
重新打开Appfile
,取消注释以app_identifier
开头的行,然后将[[APP_IDENTIFIER]]
替换为刚创建的bundle ID
。
如果您之前必须选择一个团队,请添加团队名称,这样您就不必在运行lanes时再次输入该团队。 要指定Developer Portal / App Store Connect
团队名称,请添加:
team_name ("[[TEAM_NAME]]")
将[[TEAM_NAME]]
替换为您队伍的名称。
Generating the Deliverfile
回到终端,输入:
bundle exec fastlane deliver
当fastlane问:“Do you want to setup deliver?”
输入y
作为回应。
接下来fastlane将会问:“Would you like to use Swift instead of Ruby?”
,虽然作为iOS开发人员,你可能更喜欢在Swift工作,但在编写本教程时,fastlane.swift仍处于测试阶段。 因此,输入n
以在fastlane
文件中使用Ruby
。
deliver
成功完成后,在Finder
中导航回mZone / fastlane
,您会看到一些新内容:
- 元数据目录,它将保存应用程序的大部分元数据。
-
Deliverfile
,它将包含一些剩余的元数据。 - 截图目录,其中包含应用截图。
在元数据目录中,您会注意到一系列以常见App Store项目命名的文本文件,如描述,关键字,类别等。fastlane
将使用这些文件将您的应用程序的元数据信息提交到App Store Connect
。
打开en-US / description.txt
并添加:
mZone is a simple poker calculator for No Limit Texas Hold 'Em tournaments that displays a recommended course of action based on your chip count and the current big blind level.
在keywords.txt
中添加
Poker, Cards, Gambling
确认name.txt
已包含您的应用名称,然后将https://www.xxx.com
添加到privacy_url.txt
和support_url.txt
。
虽然此应用程序支持法语和英语,但只存在en-US
文件夹。 要解决此问题,请在同一目录中复制en-US
文件夹并将其命名为fr-FR
。 为了保持这个fastlane
教程简短,您不必将元数据翻译成法语......这一次。
接下来,在元数据文件夹中:
- 将
Copyright (c) 2019 Razeware LLC
添加到copyright.txt
。 - 将
Games
添加到primary_category.txt
。 - 将
Card
添加到primary_first_sub_category.txt
。 - 将
Casino
添加到primary_second_sub_category.txt
。
然后,在同一文件夹中,使用您喜欢的文本/代码编辑器创建一个名为app_store_rating_config.json
的JSON
文件,其中包含:
{
"CARTOON_FANTASY_VIOLENCE": 0,
"REALISTIC_VIOLENCE": 0,
"PROLONGED_GRAPHIC_SADISTIC_REALISTIC_VIOLENCE": 0,
"PROFANITY_CRUDE_HUMOR": 0,
"MATURE_SUGGESTIVE": 0,
"HORROR": 0,
"MEDICAL_TREATMENT_INFO": 0,
"ALCOHOL_TOBACCO_DRUGS": 0,
"GAMBLING": 2,
"SEXUAL_CONTENT_NUDITY": 0,
"GRAPHIC_SEXUAL_CONTENT_NUDITY": 0,
"UNRESTRICTED_WEB_ACCESS": 0,
"GAMBLING_CONTESTS": 0
}
该评级配置指示该应用具有frequent/intense
模拟赌博(即,value= 2
)并且没有其他列出的内容。 此文件为Apple提供了分配适当年龄等级所需的信息。
最后,在review_information
文件夹中,将您的电子邮件地址添加到email_address.txt
,您的名字为first_name.txt
,您的姓氏为last_name.txt
,您的电话号码为phone_number.txt
。 例如,在电话号码前加上“+”后跟国家/地区代码; +44 844 209 0611
。
恭喜! 您已添加提交所需的所有元数据。
注意:您可以在此处here找到元数据选项和Deliverfile设置的完整列表。
Automating Screenshots
截图可能很乏味。 您的应用支持的设备和语言越多,您刻录的时间就越多。 痛苦!
mZone Poker
支持两种语言和两种iPhone屏幕宽高比。 如果您必须为每种语言和屏幕宽高比拍摄每个设备的五个屏幕截图,那么这将是20个屏幕截图! 但是,使用fastlane,您可以通过运行单个命令来完成所有这些操作。
通过进入终端设置快照项目:
fastlane snapshot init
Snapfile
文件现在将出现在fastlane
文件夹中。 打开它并用以下内容替换文件的内容:
# 1 - A list of devices you want to take the screenshots from
devices([
"iPhone 8 Plus",
"iPhone SE"
])
# 2 - A list of supported languages
languages([
'en-US',
'fr-FR'
])
# 3 - The name of the scheme which contains the UI Tests
scheme("mZone Poker UITests")
# 4 - Where should the resulting screenshots be stored?
output_directory "./fastlane/screenshots"
# 5 - Clears previous screenshots
clear_previous_screenshots(true)
在这里,您指定:
- 1) 您希望fastlane捕获屏幕截图的设备。
- 2) 您要捕获的本地化语言。
- 3) 您即将创建的Xcode scheme的名称,用于运行屏幕截图自动化。
- 4) 屏幕截图输出目录。
- 5) fastlane应该在捕获新的屏幕截图之前清除输出目录中的任何屏幕截图。
关闭前保存文件。
返回终端并记下运行fastlane snapshot init
后出现的说明:
这就是你接下来要做的
1. Creating a Test Target
在Xcode中打开mZone Poker.xcodeproj
,然后导航到File ▸ New ▸ Target
。 在iOS选项卡的Test
部分中,选择iOS UI Testing Bundle
,然后单击Next
。
在Product Name
字段中,输入mZone Poker UITests
,然后单击Finish
。
mZone Poker UITests
文件夹现在应该出现在Xcode
的左侧导航菜单中。
转到目标的General
页面。 在mZone Poker
目标下方,您现在可以看到mZone Poker UITests
。 选择mZone Poker UITests
,如果您看到一条错误声明Signing for “mZone Poker UITests” requires a development team
,请选择一个团队。
返回fastlane
目录,然后将SnapshotHelper.swift
拖到Xcode项目导航器中的mZone Poker UITests
文件夹下。 当出现Choose options for adding these files
窗口时,选择:
Copy items if needed
Create groups
mZone Poker UITests
在单击Finish
之前取消选择mZone Poker
目标。
接下来,在mZone Poker UITests
中打开mZone_Poker_UITests.swift
。 删除setUp()
和tearDown()
,然后将testExample()
的内容替换为:
// 1
let app = XCUIApplication()
setupSnapshot(app)
app.launch()
// 2
let chipCountTextField = app.textFields["chip count"]
chipCountTextField.tap()
chipCountTextField.typeText("10")
// 3
let bigBlindTextField = app.textFields["big blind"]
bigBlindTextField.tap()
bigBlindTextField.typeText("100")
// 4
snapshot("01UserEntries")
// 5
app.buttons["what should i do"].tap()
snapshot("02Suggestion")
这是代码的作用:
- 1) 设置测试以拍摄快照并启动应用程序。
- 2) 点击
Chip Count
文本字段(其可访问性标识符在故事板中预先设置为Chip Count
)并在该字段中输入10。 - 3) 点击
Big Blind
文本字段并输入100。 - 4) 拍摄快照以显示应用与用户条目的外观。
- 5) 点击
What Should I Do?
按钮然后采取另一个屏幕截图来捕获结果警报。
接下来,要创建mZone Poker UITests
方案,请单击运行和停止按钮右侧的按钮,然后选择Manage Schemes…
,选择mZone Poker UITests
旁边的Show
并在两个目标旁边共享以授予fastlane
访问权限。 然后,单击mZone Poker UITests
行和Edit ...
。
注意:如果未显示该
scheme
,请单击+并从目标下拉列表中选择mZone Poker UITests
。
在方案编辑器的左侧菜单中单击Build
。 然后,在mZone Poker UITests
目标旁边,选择Test
和Run
选项,然后单击Close
以保存更改。
离开Xcode
,打开Fastfile
,在create_app
通道下面添加:
desc "Take screenshots"
lane :screenshot do
snapshot
end
此screenshot
通道使用快照根据Snapfile
的设置截取屏幕截图。
保存Fastfile
,返回终端并输入:
bundle exec fastlane screenshot
现在,观看...截图被捕获,您无需做任何其他事情!
快照完成后,屏幕截图的HTML预览应自动打开。
注意:快照需要访问
Snapfile
中列出的模拟器。 如果您缺少该列表中的一个或多个设备,请转到Window ▸ Devices
,在Xcode中添加它们。 然后,单击+以添加新模拟器。如果您看到有关模糊模拟器名称的警告,则可能需要删除重复的模拟器或更改模拟器名称以匹配
Snapfile
中的模拟器名称。
只需一个命令,您的所有设备屏幕截图均为英语和法语 - 它没有比这更好!
Creating the IPA File
构建和上传应用程序也是一个耗时的过程。 但是猜猜 - fastlane
可以用它的gym
工具做到这一点!
注意:请确保您已在
Xcode
中的mZone Poker
目标中设置了bundle identifier
和签名身份。
在终端中,运行:
fastlane gym init
创建Gymfile
打开Gymfile
并将其内容替换为:
# 1
scheme("mZone Poker")
# 2
output_directory("./fastlane/builds")
# 3
include_bitcode(false)
# 4
include_symbols(false)
#5
export_xcargs("-allowProvisioningUpdates")
此代码执行以下操作:
- 1) 指定
mZone Poker
的计划。 - 2) 指定
fastlane
应存储.ipa app
二进制文件的位置。 - 3) 从构建中排除
bitcode
。Bitcode
允许Apple优化您的应用程序,但暂时将其排除以加快构建速度。 - 4) 从构建中排除符号。 包含符号允许Apple访问应用程序的调试信息,但暂时将其排除以加快构建速度。
- 5) 允许Xcode使用自动配置。
打开Fastfile
并在屏幕截图下添加以下内容:
desc "Create ipa"
lane :build do
# 1
enable_automatic_code_signing
# 2
increment_build_number
# 3
gym
end
这个build lane
:
- 1) 在Xcode中启用自动配置。
- 2) 将构建数增加1(因此每个构建号对于
App Store Connect
的上载要求是唯一的)。 - 3) 创建一个签名的
.ipa
文件。
保存Fastfile
,然后在终端中运行build
:
bundle exec fastlane build
如果系统提示您输入钥匙串密码以便fastlane
访问您的证书,请执行此操作。 如果您不想重复授予相同权限,请选择Allow Always
。 一旦构建成功完成,签名的.ipa
应该出现在fastlane / builds
中。
Uploading to App Store Connect
要将屏幕截图,元数据和.ipa
文件上传到App Store Connect
,您将使用deliver
。
首先,用以下内容替换Deliverfile
的内容:
# 1
price_tier(0)
# 2
submission_information({
export_compliance_encryption_updated: false,
export_compliance_uses_encryption: false,
content_rights_contains_third_party_content: false,
add_id_info_uses_idfa: false
})
# 3
app_rating_config_path("./fastlane/metadata/app_store_rating_config.json")
# 4
ipa("./fastlane/builds/mZone Poker.ipa”)
# 5
submit_for_review(true)
# 6
automatic_release(false)
在这里你:
- 1) 将价格等级设置为0,表明它是一个免费的应用程序。
- 2) 回答Apple在手动提交审核时会向您呈现的问题。
- 3) 提供应用评级配置位置。
- 4) 提供
.ipa
文件位置。 - 5) 将
submit_for_review
设置为true
以自动提交应用以供审核。 - 6) 将
automatic_release
设置为false
,因此您必须在应用审核接受后手动释放该应用。
打开Fastfile
。 在build lane
之后,添加:
desc "Upload to App Store"
lane :upload do
deliver
end
然后,为fastlane
创建元数据的预览,打开终端并输入:
bundle exec fastlane upload
如果一切看起来都很好,请在终端中键入y
以批准。
完成lane
后,登录App Store Connect
。 屏幕截图,元数据和构建应该在那里,等待审查。
Putting It All Together
您现在可以使用单独的通道来创建应用,截屏,构建和上传。 虽然你可以一个一个地调用他们,但是你不想,对吧?
哦,不 - 你想要一个能完成一切的命令。
打开Fastfile
。 upload
通道后,添加:
desc “Create app, take screenshots, build and upload to App Store"
lane :do_everything do
create_app
screenshot
build
upload
end
恰如其分,do_everything
可以做好一切。
此外,要使通道完全免操作,请打开Deliverfile
,并在底部添加:
force(true)
这会导致fastlane
跳过屏幕截图和元数据批准。
现在,让fastlane
完成所有繁重的工作,运行:
bundle exec fastlane do_everything
Supporting Multiple Targets
在mZone_Sample_Project
中看到Multiple_Targets
文件夹? 在Xcode中打开Multiple_Targets / mZone-2 / mZone Poker.xcodeproj
。 除了两个新目标之外,这个项目应该看起来很像第一个:mZone Poker Pro
和mZone Poker Pro UITest
。
要在运行mZone Poker
和mZone Poker Pro
之间切换,请单击“运行”和“停止”按钮右侧的按钮,然后选择您希望运行的应用程序的方案。
构建并运行mZone Poker Pro
。 它与mZone Poker
几乎完全相同,但会返回更详细的建议。
在General
页面上,将mZone Poker
的包标识符设置为您之前创建的标识符。
然后,为mZone Poker Pro
设置一个暂定的新bundle ID
,例如:
com.mZone-Poker-Pro.[Insert your email address minus “@” and “.”]
现在,回到Finder
。 将mZone
中的Gemfile
和fastlane
目录复制并粘贴到mZone-2
中。 然后,将mZone-2 / fastlane / SnapshotHelper.swift
拖入新项目。 当出现Choose options for adding these files
窗口时,选择:
Copy items if needed.
Create groups.
mZone Poker UITests.
mZone Poker Pro UITests.
点击Finish
Setting Up Multiple Environments
环境(.env)
文件包含应用程序在执行期间可以不同地访问的配置设置。 对于此项目,您将创建两个环境 - 每个应用程序目标一个环境。
打开您喜欢的文本编辑器,禁用智能引号并输入:
SCHEME = "mZone Poker"
TEST_SCHEME = "mZone Poker UITests"
BUNDLE_IDENTIFIER = "[[YOUR UNIQUE BUNDLE IDENTIFIER]]"
APP_NAME = "[[YOUR UNIQUE APP NAME]]"
此环境包含mZone Poker
的环境方案,测试方案,包标识符和应用程序名称。 将[[YOUR UNIQUE BUNDLE IDENTIFIER]]
替换为mZone Poker
的bundle ID
和[[YOUR UNIQUE APP NAME]]
和应用程序的唯一名称。
将文件保存为mZone-2 / fastlane
,为.env.mZone_Poker
(没有文件后缀)。 由于默认情况下.env
变量是隐藏文件,如果在Finder中看不到.env.mZone_Poker
,请按Shift-Command-.
。 而在Finder中可以隐藏文件。
同样,创建第二个文件,其中包含:
SCHEME = "mZone Poker Pro"
TEST_SCHEME = "mZone Poker Pro UITests"
BUNDLE_IDENTIFIER = "[[YOUR UNIQUE BUNDLE IDENTIFIER]]"
APP_NAME = "[[YOUR UNIQUE APP NAME]]"
替换[[YOUR UNIQUE BUNDLE IDENTIFIER]] mZone Poker Pro
的当前bundle ID
。 然后创建一个暂定的唯一应用名称,例如:
mZone Poker Pro [Insert your email address minus “@” and “.”]
请记住,应用名称不能超过30个字符,因此必要时会截断。
将文件另存为.env.mZone_Poker_Pro
在同一目录中。
现在,当您在方案之间切换时,您将能够使用变量来访问当前设置。
对于初学者,打开Appfile
,取消注释app_identifier
行并替换:
app_identifier("[[APP_IDENTIFIER]]")
使用下面
app_identifier(ENV['BUNDLE_IDENTIFIER'])
“ENV ['BUNDLE_IDENTIFIER']”
告诉fastlane
从您设置为当前环境的任何一个中获取bundle ID
。
在Deliverfile
中,将.ipa
行替换为:
ipa("./fastlane/builds/#{ENV['APP_NAME']}.ipa")
在Gymfile
中,将方案行替换为:
scheme(ENV['SCHEME'])
在Snapfile
中,将scheme
和output_directory
行替换为:
scheme(ENV['TEST_SCHEME'])
和
output_directory "./fastlane/screenshots/#{ENV['SCHEME']}"
最后,返回到新的元数据目录。 选择其所有内容并将其放入名为mZone Poker
的新文件夹中。
然后,复制那个复制mZone Poker Pro
的文件夹和名称。
将mZone Poker Pro / en-US / name.txt
和mZone Poker Pro / fr-FR / name.txt
的内容更改为新应用程序的名称。 为简单起见,暂时保留所有其他元数据。
现在,要运行第二个目标的所有命令,您可以输入:
bundle exec fastlane do_everything --env mZone_Poker_Pro
这将使用.env.mZone_Poker_Pro
的变量运行do_everything
。
但是如果你想一次为所有目标运行所有命令呢?
打开Fastfile
。 在do_everything
下面,添加:
def execute_for_all_envs
# 1
schemeList = Dir.glob(".env.*”)
# 2
schemeList.each do |file|
# 3
Dotenv.overload(file)
# 4
yield
end
end
这个方法:
- 1) 放入当前目录的
.env. files into an array
。 - 2) 遍历每个
.env
文件。 - 3) 使用当前
.env
文件重载ENV
。 - 4) 执行
execute_for_all_envs
调用后的块。
然后,要从do_everything
调用execute_for_all_envs
,请将do_everything
的内容替换为:
if ENV['SCHEME'] != nil
create_app
screenshot
build
upload
else
execute_for_all_envs{ do_everything }
end
现在,如果未在命令行中指定环境,则ENV ['SCHEME'] == nil
,因此execute_for_all_envs
运行。 execute_for_all_envs
将ENV
设置为第一个环境,返回到调用块,然后重新运行do_everything
。
do_everything
为该环境完成所有操作后,execute_for_all_envs
中的循环继续并返回下一个环境,依此类推。
现在你可以运行:
bundle exec fastlane do_everything
当你坐下来放松时,让fastlane
为两个目标做所有繁重的工作。
fastlane
还支持TestFlight
提交和大量集成。 您可以自定义您的lane
,以提供有关Slack
的实时反馈,与Jira boards
交互等。访问官方fastlane网站(the official fastlane website)以了解更多信息。
后记
本篇主要讲述了fastlane自动化打包,感兴趣的给个赞或者关注~~~