版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2019.03.02 星期六 |
前言
我們在做App開發(fā)的時候顿乒,開發(fā)人員開發(fā)完成以后就要交給QA進行測試了削樊,有幾種方式青团,一種就是將QA的測試機加到賬號里面的Device里面何什,這個有個數(shù)限制(每種硬件類型不能超過100臺组哩,即使刪除設備也不會重置),然后利用三方平臺比如說蒲公英進行分發(fā),還有一種方法就是使用TestFlight進行測試伶贰,這個專題就主要說一下App分發(fā)測試相關的內容蛛砰。感興趣的看上面幾篇。
1. App的分發(fā)測試(一) —— 淺談蒲公英平臺分發(fā)測試的使用(一)
2. App的分發(fā)測試(二) —— TestFlight集成和分發(fā)測試(一)
3. App的分發(fā)測試(三) —— fastlane自動化打包并上傳(一)
開始
首先看下寫作環(huán)境
Other, macOS 10.14, Other
這是一個美妙的時刻:你已經(jīng)花了幾天黍衙,幾周甚至幾個月來構建應用程序泥畅,它終于準備好與世界分享。您所要做的就是將其提交到App Store琅翻。這有多難位仁,對吧?
提示大量的工作:捕獲大量的屏幕截圖方椎,將您的應用程序添加到Apple Developer
和App Store Connect
網(wǎng)站聂抢,上傳您的二進制文件和元數(shù)據(jù)以及其他無意識的工作!哎呀棠众!
有沒有更好的方法涛浙?如果只有您可以運行單個命令,在所有支持的設備上截取所有屏幕截圖摄欲,則自動使用每種受支持的語言。如果只有一個命令來上傳這些屏幕截圖疮薇,請將您的應用添加到Apple的開發(fā)者網(wǎng)站并提交所有內容胸墙。想想你所節(jié)省的所有時間!
嗯按咒,你很幸運迟隅。感謝創(chuàng)作者Felix Krause和主要維護者Josh Holtz,有一個工具可以完成所有這些以及更多励七!它被稱為fastlane智袭!在本教程中,您將學習如何使用fastlane將應用程序部署到App Store掠抬。它一定會成為你最好的新朋友吼野,即使谷歌在2017年通過收購fastlane也與他們建立了關系 acquiring it in 2017。
注意:本教程假設您擁有付費
Apple Developer
帳戶两波,以及命令行瞳步,Xcode和應用程序提交過程的基本知識。
首先腰奋,使用本教程的示例應用程序mZone Poker
是No Limit Texas Hold'Em
錦標賽的撲克計算器单起。 它會根據(jù)您的籌碼數(shù)量和當前的大盲注級別顯示建議的操作。
在Xcode中打開mZone
項目來構建劣坊,運行并檢查它嘀倒。
Setting Up fastlane
fastlane
工具是Ruby
腳本的集合,因此您必須安裝正確版本的Ruby。 您的操作系統(tǒng)默認情況下可能會附帶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
惜傲。 如果沒有,請在出現(xiàn)提示時繼續(xù)安裝贝攒。
現(xiàn)在你已準備好安裝fastlane
盗誊! 輸入以下命令:
sudo gem install -n /usr/local/bin fastlane --verbose
如果您更喜歡使用Homebrew
,請輸入以下命令:
brew cask install fastlane
注意:使用
El Capitan
隘弊,OS X引入了系統(tǒng)完整性保護(System Integrity Protection)(也稱為Rootless
)哈踱,可防止用戶具有root訪問權限。/ usr / local / bin
仍然是可寫的梨熙,這就是你在那里安裝fastlane的原因开镣。
輸入系統(tǒng)密碼后,您將在終端中看到一系列活動咽扇,表明安裝正在進行中邪财。 這可能需要幾分鐘時間,所以可以喝點咖啡质欲,遛狗或者刷你的僵尸戰(zhàn)術树埠。
安裝完成后,您就可以在項目中設置fastlane了嘶伟。 但在此之前怎憋,這里是對fastlane工具的高級別介紹。
The fastlane Toolchain
為了發(fā)揮其魔力九昧,fastlane
將以下一套工具集中在一起:
-
produce在
App Store Connect
和Apple Developer Portal
中創(chuàng)建新的iOS應用程序盛霎。 - cert自動創(chuàng)建和維護iOS代碼簽名證書。
- sigh創(chuàng)建耽装,更新愤炸,下載和修復配置文件。
- snapshot可自動在每臺設備上獲取iOS應用的本地化屏幕截圖掉奄。
- frameit將您的屏幕截圖放入正確的設備框架中规个。
- gym構建并打包您的iOS應用程序凤薛。
- deliver將截圖,元數(shù)據(jù)和您的應用程序上傳到App Store诞仓。
- pem會自動生成并更新您的推送通知配置文件缤苫。
-
spaceship是一個
Ruby
庫,可以訪問Apple Developer Center
和App Store Connect API
墅拭。 -
pilot自動化
TestFlight
部署并管理beta測試人員活玲。 - boarding邀請beta測試人員。
- match使用Git匹配整個團隊中的同步證書和配置文件谍婉。
- scan會對您的應用運行測試舒憾。
您今天將使用其中的幾種工具。現(xiàn)在已經(jīng)足夠理論了 - 現(xiàn)在是時候把這個教程付諸實踐并進入快車道了穗熬!
Adding fastlane to Your Project
打開終端并cd
到mZone
啟動項目镀迂。 例如,如果您已將mZone_Sample_Project
文件夾添加到桌面唤蔗,則可以輸入:
cd ~/Desktop/mZone_Sample_Project/mZone
將mZone starter
項目設置為工作目錄探遵。
接下來,輸入:
fastlane init
要初始化fastlane
注意:如果出現(xiàn)
permission denied
錯誤妓柜,請在此命令前加上sudo
箱季。如果在任何時候,
fastlane
告訴你更新到最新的版本棍掐,但運行sudo gem update fastlane
輸出Nothing to update
规哪,也許你正在使用的Ruby管理器不是最新的。 運行gem sources --add https://rubygems.org/
來安裝Ruby Gems
塌衰,因為它可能會生成最新的信息。
經(jīng)過一些輸出后蝠嘉,fastlane會問:What would you like to use fastlane for?
雖然fastlane recommend[s] automating one task first
最疆,但在本單一教程中您將實施多項自動操作,因此輸入4
以開始手動設置蚤告。 讀取輸出并在出現(xiàn)提示時按Enter鍵努酸。
回到mZone
文件夾,你會看到一些新東西:Gemfile
杜恰,它包含fastlane gem
作為項目依賴項和fastlane
文件夾获诈,包含:
-
Appfile:存儲應用程序標識符,
Apple ID
以及fastlane設置應用程序所需的任何其他標識信息心褐。 - Fastfile:管理您將創(chuàng)建的用于調用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
知染。
哇噢肋僧! 你現(xiàn)在已經(jīng)創(chuàng)建了你的第一條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
這將運行您剛剛創(chuàng)建的create_app
通道勋篓。
你應該看到這樣的東西:
在輸出的頂部吧享,fastlane
建議你在fastlane命令之前加上“bundle exec”
,以便在gem
包的上下文中更快地啟動fastlane
譬嚣。 展望未來钢颂,你可以這樣做。
如果出現(xiàn)提示拜银,請輸入App Store Connect
密碼殊鞭。 如果您的Developer Portal
有多個團隊,請輸入與您要用于mZone Poker
應用程序的團隊相對應的編號尼桶。
最終操灿,產(chǎn)品將要求您輸入您的bundle ID
。 是時候創(chuàng)造了一個泵督!
bundle identifier
必須與App Store Connect
中曾經(jīng)使用過的任何其他bundle identifier
不同趾盐。 嘗試使用以下格式輸入唯一的包標識符:
com.mZone-Poker.[Insert your email address minus “@” and “.”]
如果已經(jīng)使用了bundle identifier
,請對其進行編輯并重試小腊,直到您提交了唯一ID救鲤。
然后,當系統(tǒng)提示您提交應用名稱時秩冈,它也必須是唯一的本缠。 嘗試使用以下格式:
mZone Poker [Insert your email address minus “@” and “.”]
但是,應用程序名稱不能超過30個字符入问,因此必要時會截斷搓茬。
如果您的App Store Connect
帳戶有多個團隊犹赖,請輸入與您要使用的團隊相對應的編號。
如果您收到任何錯誤卷仑,指出您的Apple Developer帳戶存在問題(例如峻村,如果您需要接受新的程序協(xié)議),請更正問題锡凝,然后再次produce
產(chǎn)品粘昨。
如果應用程序名稱不可用,則該過程將以錯誤結束窜锯。 再次運行produce
张肾,重新輸入您的Apple ID
和您剛創(chuàng)建的相同Bundle ID
,然后展開您的創(chuàng)意肌肉以創(chuàng)建唯一ID或返回到此段落的頂部并重復锚扎。 我們知道吞瞪,令人沮喪,但我們相信你會打破無限循環(huán)驾孔!
登錄Apple Developer Center
和App Store Connect
芍秆。瞧! 您的應用已添加到兩者中翠勉。 多么酷把丁?
重新打開Appfile
对碌,取消注釋以app_identifier
開頭的行荆虱,然后將[[APP_IDENTIFIER]]
替換為剛創(chuàng)建的bundle ID
。
如果您之前必須選擇一個團隊朽们,請?zhí)砑訄F隊名稱怀读,這樣您就不必在運行l(wèi)anes時再次輸入該團隊。 要指定Developer Portal / App Store Connect
團隊名稱骑脱,請?zhí)砑樱?/p>
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開發(fā)人員椿息,你可能更喜歡在Swift工作歹袁,但在編寫本教程時,fastlane.swift仍處于測試階段寝优。 因此条舔,輸入n
以在fastlane
文件中使用Ruby
。
deliver
成功完成后丛楚,在Finder
中導航回mZone / fastlane
插勤,您會看到一些新內容:
- 元數(shù)據(jù)目錄,它將保存應用程序的大部分元數(shù)據(jù)唉匾。
-
Deliverfile
凄硼,它將包含一些剩余的元數(shù)據(jù)铅协。 - 截圖目錄,其中包含應用截圖摊沉。
在元數(shù)據(jù)目錄中狐史,您會注意到一系列以常見App Store項目命名的文本文件,如描述说墨,關鍵字骏全,類別等。fastlane
將使用這些文件將您的應用程序的元數(shù)據(jù)信息提交到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
教程簡短爬橡,您不必將元數(shù)據(jù)翻譯成法語......這一次。
接下來棒动,在元數(shù)據(jù)文件夾中:
- 將
Copyright (c) 2019 Razeware LLC
添加到copyright.txt
糙申。 - 將
Games
添加到primary_category.txt
。 - 將
Card
添加到primary_first_sub_category.txt
船惨。 - 將
Casino
添加到primary_second_sub_category.txt
柜裸。
然后,在同一文件夾中粱锐,使用您喜歡的文本/代碼編輯器創(chuàng)建一個名為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
自点。 例如,在電話號碼前加上“+”后跟國家/地區(qū)代碼; +44 844 209 0611
脉让。
恭喜桂敛! 您已添加提交所需的所有元數(shù)據(jù)功炮。
注意:您可以在此處here找到元數(shù)據(jù)選項和Deliverfile設置的完整列表。
Automating Screenshots
截圖可能很乏味术唬。 您的應用支持的設備和語言越多薪伏,您刻錄的時間就越多。 痛苦碴开!
mZone Poker
支持兩種語言和兩種iPhone屏幕寬高比毅该。 如果您必須為每種語言和屏幕寬高比拍攝每個設備的五個屏幕截圖,那么這將是20個屏幕截圖潦牛! 但是眶掌,使用fastlane,您可以通過運行單個命令來完成所有這些操作巴碗。
通過進入終端設置快照項目:
fastlane snapshot init
Snapfile
文件現(xiàn)在將出現(xiàn)在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) 您即將創(chuàng)建的Xcode scheme的名稱,用于運行屏幕截圖自動化逸爵。
- 4) 屏幕截圖輸出目錄具滴。
- 5) fastlane應該在捕獲新的屏幕截圖之前清除輸出目錄中的任何屏幕截圖。
關閉前保存文件师倔。
返回終端并記下運行fastlane snapshot init
后出現(xiàn)的說明:
這就是你接下來要做的
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
文件夾現(xiàn)在應該出現(xiàn)在Xcode
的左側導航菜單中搓萧。
轉到目標的General
頁面杂数。 在mZone Poker
目標下方,您現(xiàn)在可以看到mZone Poker UITests
瘸洛。 選擇mZone Poker UITests
揍移,如果您看到一條錯誤聲明Signing for “mZone Poker UITests” requires a development team
,請選擇一個團隊货矮。
返回fastlane
目錄羊精,然后將SnapshotHelper.swift
拖到Xcode項目導航器中的mZone Poker UITests
文件夾下斯够。 當出現(xiàn)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?
按鈕然后采取另一個屏幕截圖來捕獲結果警報定铜。
接下來阳液,要創(chuàng)建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
通道使用快照根據(jù)Snapfile
的設置截取屏幕截圖。
保存Fastfile
痊硕,返回終端并輸入:
bundle exec fastlane screenshot
現(xiàn)在赊级,觀看...截圖被捕獲,您無需做任何其他事情岔绸!
快照完成后理逊,屏幕截圖的HTML預覽應自動打開。
注意:快照需要訪問
Snapfile
中列出的模擬器盒揉。 如果您缺少該列表中的一個或多個設備晋被,請轉到Window ? Devices
,在Xcode中添加它們刚盈。 然后羡洛,單擊+以添加新模擬器。如果您看到有關模糊模擬器名稱的警告藕漱,則可能需要刪除重復的模擬器或更改模擬器名稱以匹配
Snapfile
中的模擬器名稱欲侮。
只需一個命令崭闲,您的所有設備屏幕截圖均為英語和法語 - 它沒有比這更好!
Creating the IPA File
構建和上傳應用程序也是一個耗時的過程威蕉。 但是猜猜 - fastlane
可以用它的gym
工具做到這一點刁俭!
注意:請確保您已在
Xcode
中的mZone Poker
目標中設置了bundle identifier
和簽名身份。
在終端中韧涨,運行:
fastlane gym init
創(chuàng)建Gymfile
打開Gymfile
并將其內容替換為:
# 1
scheme("mZone Poker")
# 2
output_directory("./fastlane/builds")
# 3
include_bitcode(false)
# 4
include_symbols(false)
#5
export_xcargs("-allowProvisioningUpdates")
此代碼執(zhí)行以下操作:
- 1) 指定
mZone Poker
的計劃牍戚。 - 2) 指定
fastlane
應存儲.ipa app
二進制文件的位置。 - 3) 從構建中排除
bitcode
虑粥。Bitcode
允許Apple優(yōu)化您的應用程序如孝,但暫時將其排除以加快構建速度。 - 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) 將構建數(shù)增加1(因此每個構建號對于
App Store Connect
的上載要求是唯一的)。 - 3) 創(chuàng)建一個簽名的
.ipa
文件涧至。
保存Fastfile
腹躁,然后在終端中運行build
:
bundle exec fastlane build
如果系統(tǒng)提示您輸入鑰匙串密碼以便fastlane
訪問您的證書,請執(zhí)行此操作南蓬。 如果您不想重復授予相同權限纺非,請選擇Allow Always
。 一旦構建成功完成赘方,簽名的.ipa
應該出現(xiàn)在fastlane / builds
中烧颖。
Uploading to App Store Connect
要將屏幕截圖,元數(shù)據(jù)和.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在手動提交審核時會向您呈現(xiàn)的問題。
- 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
創(chuàng)建元數(shù)據(jù)的預覽反砌,打開終端并輸入:
bundle exec fastlane upload
如果一切看起來都很好,請在終端中鍵入y
以批準萌朱。
完成lane
后,登錄App Store Connect
策菜。 屏幕截圖晶疼,元數(shù)據(jù)和構建應該在那里,等待審查又憨。
Putting It All Together
您現(xiàn)在可以使用單獨的通道來創(chuàng)建應用翠霍,截屏,構建和上傳蠢莺。 雖然你可以一個一個地調用他們寒匙,但是你不想,對吧躏将?
哦锄弱,不 - 你想要一個能完成一切的命令。
打開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
跳過屏幕截圖和元數(shù)據(jù)批準巍沙。
現(xiàn)在,讓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
的包標識符設置為您之前創(chuàng)建的標識符。
然后编矾,為mZone Poker Pro
設置一個暫定的新bundle ID
熟史,例如:
com.mZone-Poker-Pro.[Insert your email address minus “@” and “.”]
現(xiàn)在,回到Finder
窄俏。 將mZone
中的Gemfile
和fastlane
目錄復制并粘貼到mZone-2
中蹂匹。 然后,將mZone-2 / fastlane / SnapshotHelper.swift
拖入新項目凹蜈。 當出現(xiàn)Choose options for adding these files
窗口時限寞,選擇:
Copy items if needed.
Create groups.
mZone Poker UITests.
mZone Poker Pro UITests.
點擊Finish
Setting Up Multiple Environments
環(huán)境(.env)
文件包含應用程序在執(zhí)行期間可以不同地訪問的配置設置。 對于此項目仰坦,您將創(chuàng)建兩個環(huán)境 - 每個應用程序目標一個環(huán)境履植。
打開您喜歡的文本編輯器,禁用智能引號并輸入:
SCHEME = "mZone Poker"
TEST_SCHEME = "mZone Poker UITests"
BUNDLE_IDENTIFIER = "[[YOUR UNIQUE BUNDLE IDENTIFIER]]"
APP_NAME = "[[YOUR UNIQUE APP NAME]]"
此環(huán)境包含mZone Poker
的環(huán)境方案悄晃,測試方案玫霎,包標識符和應用程序名稱。 將[[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中可以隱藏文件溪椎。
同樣普舆,創(chuàng)建第二個文件,其中包含:
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
校读。 然后創(chuàng)建一個暫定的唯一應用名稱沼侣,例如:
mZone Poker Pro [Insert your email address minus “@” and “.”]
請記住,應用名稱不能超過30個字符歉秫,因此必要時會截斷蛾洛。
將文件另存為.env.mZone_Poker_Pro
在同一目錄中。
現(xiàn)在雁芙,當您在方案之間切換時轧膘,您將能夠使用變量來訪問當前設置。
對于初學者兔甘,打開Appfile
谎碍,取消注釋app_identifier
行并替換:
app_identifier("[[APP_IDENTIFIER]]")
使用下面
app_identifier(ENV['BUNDLE_IDENTIFIER'])
“ENV ['BUNDLE_IDENTIFIER']”
告訴fastlane
從您設置為當前環(huán)境的任何一個中獲取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']}"
最后,返回到新的元數(shù)據(jù)目錄熔任。 選擇其所有內容并將其放入名為mZone Poker
的新文件夾中褒链。
然后,復制那個復制mZone Poker Pro
的文件夾和名稱疑苔。
將mZone Poker Pro / en-US / name.txt
和mZone Poker Pro / fr-FR / name.txt
的內容更改為新應用程序的名稱甫匹。 為簡單起見,暫時保留所有其他元數(shù)據(jù)惦费。
現(xiàn)在兵迅,要運行第二個目標的所有命令,您可以輸入:
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) 執(zhí)行
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
現(xiàn)在,如果未在命令行中指定環(huán)境纵散,則ENV ['SCHEME'] == nil
梳码,因此execute_for_all_envs
運行。 execute_for_all_envs
將ENV
設置為第一個環(huán)境伍掀,返回到調用塊掰茶,然后重新運行do_everything
。
do_everything
為該環(huán)境完成所有操作后蜜笤,execute_for_all_envs
中的循環(huán)繼續(xù)并返回下一個環(huán)境濒蒋,依此類推。
現(xiàn)在你可以運行:
bundle exec fastlane do_everything
當你坐下來放松時把兔,讓fastlane
為兩個目標做所有繁重的工作沪伙。
fastlane
還支持TestFlight
提交和大量集成。 您可以自定義您的lane
县好,以提供有關Slack
的實時反饋围橡,與Jira boards
交互等。訪問官方fastlane網(wǎng)站(the official fastlane website)以了解更多信息缕贡。
后記
本篇主要講述了fastlane自動化打包某饰,感興趣的給個贊或者關注~~~