版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2018.08.26 |
前言
我們?cè)谧鯝pp開發(fā)的時(shí)候,開發(fā)人員開發(fā)完成以后就要交給QA進(jìn)行測(cè)試了,有幾種方式,一種就是將QA的測(cè)試機(jī)加到賬號(hào)里面的Device里面,這個(gè)有個(gè)數(shù)限制(每種硬件類型不能超過(guò)100臺(tái),即使刪除設(shè)備也不會(huì)重置),然后利用三方平臺(tái)比如說(shuō)蒲公英進(jìn)行分發(fā),還有一種方法就是使用TestFlight進(jìn)行測(cè)試,這個(gè)專題就主要說(shuō)一下App分發(fā)測(cè)試相關(guān)的內(nèi)容。感興趣的看上面幾篇。
1. App的分發(fā)測(cè)試(一) —— 淺談蒲公英平臺(tái)分發(fā)測(cè)試的使用(一)
2. App的分發(fā)測(cè)試(二) —— TestFlight集成和分發(fā)測(cè)試(一)
開始
首先看一下本文寫作環(huán)境
Swift 3, iOS 10, Xcode 8
上傳包進(jìn)行測(cè)試需要笨拙的工作:捕獲大量的截圖,進(jìn)行Xcode配置,上傳到App Store和不斷的盲目工作!這是不是很費(fèi)時(shí)間啊!
如果有更好的方法,那不是很好嗎? 如果只有您可以運(yùn)行一個(gè)命令,在所有支持的設(shè)備上自動(dòng)截取所有支持的語(yǔ)言中的所有屏幕截圖。 如果只有一個(gè)命令來(lái)上傳這些屏幕截圖,請(qǐng)生成您的配置文件并提交您的應(yīng)用。 想想你節(jié)省的所有時(shí)間!
嗯,你很幸運(yùn)。感謝神奇的Felix Krause,現(xiàn)在有一個(gè)工具可以完成所有這些以及更多! 它被稱為fastlane,它將成為你最好的朋友。
在這個(gè)fastlane
教程中,您將學(xué)習(xí)如何使用fastlane將應(yīng)用程序部署到App Store。
注意:本教程廣泛使用命令行。 雖然您不需要成為終端專家,但您需要掌握命令行的工作原理。
下面正式開始,并打開建立的工程。
mZone,您將在本教程中使用的示例應(yīng)用程序,是一款簡(jiǎn)單的撲克計(jì)算器,適用于無(wú)限注德州撲克錦標(biāo)賽。 它會(huì)根據(jù)您的籌碼數(shù)量和當(dāng)前的大注級(jí)別顯示建議的操作:
在Xcode中打開項(xiàng)目以自己查看應(yīng)用程序,然后導(dǎo)航到mZone Poker
目標(biāo)的Build Settings
。 在Product Bundle Identifier
字段中,您可以找到com.mZone.mZone-Poker-xxx
:
將xxx
替換為您的電子郵件地址“@”
和“.”
,以便項(xiàng)目的bundle identifier
與iTunes Connect
上的每個(gè)其他應(yīng)用程序標(biāo)識(shí)符不同。
要使fastlane運(yùn)行并運(yùn)行,需要以下內(nèi)容:
-
OS X 10.9(Mavericks)
或更新版本 -
Ruby 2.0
或更新版本 - Xcode命令行工具
(CLT)
- 付費(fèi)Apple開發(fā)者帳戶
由于fastlane是Ruby
腳本的集合,因此必須安裝正確版本的Ruby。 幸運(yùn)的是,OS X 10.9(Mavericks)
以及后來(lái)默認(rèn)使用Ruby 2.0。 您可以通過(guò)打開終端并輸入以下命令來(lái)確認(rèn):
ruby -v
要檢查是否安裝了Xcode CLT
,請(qǐng)?jiān)诮K端中輸入以下內(nèi)容:
xcode-select --install
如果已安裝Xcode CLT
,您將收到此錯(cuò)誤:command line tools are already installed, use "Software Update" to install updates
。 如果沒(méi)有,它將為您安裝Xcode CLT
。
完成先決條件后,您就可以安裝fastlane了。 輸入以下命令:
sudo gem install -n /usr/local/bin fastlane --verbose
注意:使用
El Capitan
,OS X引入了System Integrity Protection,也稱為Rootless
,它通過(guò)限制系統(tǒng)訪問(wèn)來(lái)防止用戶具有root訪問(wèn)權(quán)限。/ usr / local / bin
仍然是可寫的,這就是你在那里安裝fastlane的原因。
輸入系統(tǒng)密碼后,您將在終端窗口中看到一系列活動(dòng),表明安裝正在進(jìn)行中。 這可能需要幾分鐘時(shí)間,所以可以喝杯咖啡吧。
安裝完成后,您就可以設(shè)置項(xiàng)目以使用fastlane。 但在此之前,讓我們高級(jí)看一下fastlane工具。
The fastlane Toolchain - fastlane工具鏈
為了發(fā)揮其魔力,fastlane將以下一套工具集中在一個(gè)屋檐下:
-
produce在
iTunes Connect
和Apple Developer Portal
中創(chuàng)建新的iOS應(yīng)用程序。 - cert自動(dòng)創(chuàng)建和維護(hù)iOS代碼簽名證書。
- sigh創(chuàng)建,更新,下載和修復(fù)配置文件。
- snapshot可自動(dòng)在每臺(tái)設(shè)備上獲取iOS應(yīng)用的本地化屏幕截圖。
- frameit將您的屏幕截圖放入正確的設(shè)備框架中。
- gym構(gòu)建并打包您的iOS應(yīng)用程序。
- deliver將截圖,元數(shù)據(jù)和您的應(yīng)用程序上傳到App Store。
- pem會(huì)自動(dòng)生成并更新您的推送通知配置文件。
-
spaceship是一個(gè)
Ruby
庫(kù),可以訪問(wèn)Apple Developer Center
和iTunes Connect API
。 - pilot自動(dòng)化TestFlight部署并管理beta測(cè)試人員。
- boarding邀請(qǐng)測(cè)試人員。
- match使用Git匹配整個(gè)團(tuán)隊(duì)中的同步證書和配置文件。
- scan會(huì)對(duì)您的應(yīng)用運(yùn)行測(cè)試。
您將在示例應(yīng)用程序的部署過(guò)程中使用許多這些工具。
這是足夠的理論 - 現(xiàn)在是時(shí)候?qū)astlane放在快車道上了!
Setting up fastlane - 設(shè)置fastlane
首先,打開終端并cd
進(jìn)入你的mZone項(xiàng)目位置。 例如,如果您已將mZone
文件夾添加到桌面,則可以輸入:
cd ~/Desktop/mZone
將mZone
設(shè)置為工作目錄。
進(jìn)入mZone
文件夾后,輸入以下命令:
fastlane init
注意:如果出現(xiàn)
“permission denied”
錯(cuò)誤,則需要在此命令前加上sudo
。
接下來(lái),輸入您的Apple ID
以啟動(dòng)該過(guò)程。
fastlane
使用deliver
來(lái)簽署iTunes Connect
和Apple Developer Portal
,它還會(huì)使用匹配的應(yīng)用程序標(biāo)識(shí)符驗(yàn)證您帳戶中是否存在應(yīng)用程序。 由于這是一個(gè)新的應(yīng)用程序,它將不存在,它將需要?jiǎng)?chuàng)建。
如果你收到下面的錯(cuò)誤:
Connection reset by peer - SSL_Connect
嘗試像fastlane
建議的那樣更新你的ruby
版本。
除非您已經(jīng)使用rbenv
或rvm
(它們是Ruby版本管理器),否則最簡(jiǎn)單的方法是通過(guò)Homebrew。
首先,輸入以下終端命令安裝Homebrew
:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
接下來(lái),使用brew
命令安裝Ruby:
brew update && brew install ruby
Homebrew
也可能告訴你需要運(yùn)行brew link --overwrite ruby
。 您可能還需要打開一個(gè)新的終端會(huì)話。 然后,再次安裝fastlane而不指定安裝路徑:
sudo gem install fastlane --verbose
最后,再次運(yùn)行fastlane init
,它應(yīng)該能夠在iTunes Connect
上創(chuàng)建應(yīng)用程序。
您應(yīng)該看到以下輸出:
This app identifier doesn't exist on iTunes Connect yet, it will be created for you
This app identifier doesn't exist on the Apple Developer Portal yet, it will be created for you
Please confirm the above values (y/n)
輸入“y”
確認(rèn)檢測(cè)到的值。
由于我已經(jīng)在iTunes Connect
上創(chuàng)建了一個(gè)名為“mZone Poker”
的應(yīng)用程序,因此接下來(lái)會(huì)提示您:
It looks like that mZone Poker has already been taken by someone else, please enter an alternative App Name:
輸入唯一的應(yīng)用名稱。 (類似于我對(duì)bundle ID
的建議,我建議使用“mZone Poker”
,然后是您的電子郵件地址“@”
和“.”
,以確保應(yīng)用名稱是唯一的。)
經(jīng)過(guò)一段時(shí)間(根據(jù)Apple偶爾易變的服務(wù)器的狀態(tài),只需30秒和30分鐘),您將被告知您的應(yīng)用程序是在iTunes Connect
上創(chuàng)建的。
打開mZone project folder
。 您會(huì)注意到您的項(xiàng)目現(xiàn)在有一個(gè)fastlane文件夾:
相關(guān)文件是:
-
Appfile
,用于存儲(chǔ)應(yīng)用程序標(biāo)識(shí)符和Apple ID。 -
Fastfile
,用于管理您創(chuàng)建的用于調(diào)用某些操作的通道。 -
Deliverfile
,允許您在將應(yīng)用程序提交到App Store時(shí)添加所需的元數(shù)據(jù)。
在mZone Project
文件夾中,導(dǎo)航到fastlane \ metadata
。 您會(huì)注意到那里有一堆文本文件,其中包含常見(jiàn)的App Store
項(xiàng)目,如描述,關(guān)鍵字,類別等。這些文件用于設(shè)置App Store上顯示的應(yīng)用程序元數(shù)據(jù)信息。
打開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.
將以下內(nèi)容添加到keywords.txt
:
Poker, Cards, Gambling
檢查name.txt
是否已包含應(yīng)用程序的名稱,然后在privacy_url.txt
和support_url.txt
中鍵入http://www.xxxxx.com
。
雖然此應(yīng)用程序支持法語(yǔ)和英語(yǔ),但只存在en-US
文件夾。
要解決此問(wèn)題,只需復(fù)制該文件夾并將其命名為fr-FR
即可。 為了保持這個(gè)fastlane教程更短,我們現(xiàn)在不會(huì)真正提供真正的法語(yǔ)翻譯。 您的項(xiàng)目文件夾現(xiàn)在應(yīng)如下所示:
接下來(lái),在元數(shù)據(jù)文件夾中:
- 將
Copyright (c) 2016 Razeware LLC
添加到copyright.txt
- 將
Games
添加到primary_category.txt
- 將
Card
添加到primary_first_sub_category.txt
- 將
Casino
添加到primary_second_sub_category.txt
然后,在同一文件夾中,使用您喜歡的文本/代碼編輯器創(chuàng)建一個(gè)名為itunes_rating_config.json
的json文件,其中包含以下內(nèi)容:
{
"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
}
此iTunes
評(píng)級(jí)配置使iTunes Connect知道在所有評(píng)級(jí)標(biāo)準(zhǔn)中,該應(yīng)用僅包含“frequent/intense”
模擬賭博(即值= 2)。 此文件為iTunes Connect
提供了所需的信息,以便為應(yīng)用程序提供Apple認(rèn)為合適的年齡等級(jí)。
最后,在here下載App Store圖標(biāo),并將其添加到元數(shù)據(jù)目錄中。
恭喜! 您已添加了提交所需的所有元數(shù)據(jù)。 是時(shí)候開始使用fastlane了。
注意:您可以在here找到這些fastlane設(shè)置的完整密鑰列表。
Creating Certificates and Provisioning Profiles - 創(chuàng)建證書和PP文件
在您選擇的文本編輯器中打開Fastfile
,如果您的文本編輯器支持它們,則禁用智能引號(hào),然后使用以下代碼替換該文件的內(nèi)容:
# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "2.6.0"
default_platform :ios
platform :ios do
# 1
desc "Creating a code signing certificate and provisioning profile"
# 2
lane :provision do
# 3
produce(
app_name: 'YOUR_UNIQUE_APP_NAME',
language: 'English',
app_version: '1.0',
sku: '123abc'
)
# 4
cert
# 5
sigh(force: true)
end
error do |lane, exception|
# This block is called if there was an error running a lane.
end
end
將YOUR_UNIQUE_APP_NAME
替換為您之前指定的應(yīng)用名稱。 您的iTC
用戶名和應(yīng)用程序標(biāo)識(shí)符將自動(dòng)從Appfile
加載,因此您無(wú)需在此處提供它們。
如果不再是2.6.0
,也要用最新版本替換fastlane版本(由于fastlane經(jīng)過(guò)良好維護(hù)和頻繁更新,因此很可能不會(huì)是2.6.0)。
注意:要查找當(dāng)前版本,請(qǐng)?jiān)诮K端中輸入
fastlane -v
。如果在任何時(shí)候,fastlane告訴你更新到更新的版本,但運(yùn)行sudo gem update fastlane
輸出“Nothing to update”
,也許你正在使用的ruby管理器不是最新的。 運(yùn)行gem sources --add https://rubygems.org/
來(lái)安裝Ruby Gems
,因?yàn)樗赡軙?huì)生成最新的信息。
如果您之前從未見(jiàn)過(guò)Ruby
,這對(duì)您來(lái)說(shuō)可能看起來(lái)很亂,所以這就是這段代碼的作用:
- 1)提供
lane
的描述。 通lane
是順序任務(wù)的工作流程。 - 2)命名此
lane
的provision
。 - 3)使用
Produce
在iTunes Connect
和Developer Portal
中創(chuàng)建一個(gè)基本應(yīng)用程序,其中包含指定的標(biāo)識(shí)符,名稱,語(yǔ)言和版本號(hào)。 - 4)使用
cert
創(chuàng)建新的私鑰和簽名請(qǐng)求,下載并安裝生成的證書,并將所有生成的文件導(dǎo)入鑰匙串。 - 5)使用
sigh
來(lái)生成配置文件。 通過(guò)指定force:true
,可以在每次運(yùn)行時(shí)創(chuàng)建新的配置文件;這可確保您始終使用正確的代碼簽名證書。
注意:
sigh
默認(rèn)情況下會(huì)創(chuàng)建App Store
分發(fā)配置文件。 如果要?jiǎng)?chuàng)建臨時(shí)配置文件,則需要指定sigh(adhoc:true)
。 對(duì)于開發(fā)概況,它將是sigh(development: true)
。 為簡(jiǎn)單起見(jiàn),您只在本教程中創(chuàng)建分發(fā)配置文件。
哇噢! 你現(xiàn)在已經(jīng)創(chuàng)建了你的第一條lane
。 保存文件,在項(xiàng)目文件夾中打開Terminal
并輸入以下命令:
fastlane provision
這告訴fastlane運(yùn)行你的provision lane
。
大約一分鐘后,fastlane會(huì)要求您提供iTunes Connect
密碼,該密碼可以安全地存儲(chǔ)在您計(jì)算機(jī)的鑰匙串中。 輸入您的密碼,成功完成后,您的終端窗口應(yīng)輸出“fastlane summary”
:
注意:如果您發(fā)現(xiàn)任何錯(cuò)誤,尤其是“Creation of apps of this type is not available”
,請(qǐng)登錄iTunes Connect
并確保您沒(méi)有等待簽名的任何更新協(xié)議。
登錄iTunes Connect
,瞧! 您的應(yīng)用已經(jīng)創(chuàng)建。 多么酷啊?
要使用剛創(chuàng)建的配置文件,您必須在Xcode中進(jìn)行修改。 打開mZone Poker.xcodeproj
,導(dǎo)航到mZone Poker Target \ Build Settings \ Code Signing
并將您的Provisioning Profile
設(shè)置為新創(chuàng)建的<app ID> AppStore
。 然后根據(jù)此配置文件選擇您的Code Signing Identity
,如下所示:
請(qǐng)注意,您的code signing identity
將基于配置文件中可用的標(biāo)識(shí)。 通過(guò)這樣做,您的應(yīng)用程序可以在gym
構(gòu)建IPA
文件時(shí)使用新創(chuàng)建的配置文件。
導(dǎo)航到General
,取消選擇Automatically manage signing
,然后將Signing (Debug)
和Signing (Release)
設(shè)置為您剛剛指定的相同配置文件。
只需幾個(gè)命令和設(shè)置,您就可以在Dev Portal
和iTunes Connect
中添加一個(gè)應(yīng)用程序,創(chuàng)建配置文件并為您的應(yīng)用程序簽名代碼。 你已經(jīng)節(jié)省了幾個(gè)小時(shí)的工作!
Screenshots Made Easy
提交應(yīng)用時(shí),截屏是迄今為止最乏味的任務(wù)。 您的應(yīng)用程序越有用(意味著它支持的設(shè)備和語(yǔ)言越多),您進(jìn)行屏幕截圖的寶貴時(shí)間就越多!
mZone
支持兩種語(yǔ)言,英語(yǔ)和法語(yǔ),以及四種屏幕尺寸。 如果您必須為每種語(yǔ)言和屏幕大小拍攝每個(gè)設(shè)備五個(gè)屏幕截圖,那么這將是40個(gè)屏幕截圖! 但是,使用fastlane
,您可以通過(guò)運(yùn)行單個(gè)命令來(lái)完成所有這些操作。
但首先,通過(guò)在終端中輸入以下內(nèi)容來(lái)設(shè)置快照項(xiàng)目:
fastlane snapshot init
Snapfile
文件現(xiàn)在將出現(xiàn)在fastlane文件夾中。 Snapfile
允許您指定要為其提供屏幕截圖的設(shè)備和語(yǔ)言。
打開Snapfile
并使用以下代碼替換該文件的內(nèi)容:
# A list of devices you want to take the screenshots from
devices([
"iPhone 5",
"iPhone 6",
"iPhone 6 Plus"
])
# A list of supported languages
languages([
'en-US',
'fr-FR'
])
# Where should the resulting screenshots be stored?
output_directory "./fastlane/screenshots"
# Clears previous screenshots
clear_previous_screenshots true
# Latest version of iOS
ios_version '10.1'
這只是設(shè)置您要支持的設(shè)備,應(yīng)用程序支持的語(yǔ)言,并指定當(dāng)前屏幕截圖目錄的位置。 clear_previous_screenshots
將清除以前拍攝的任何截圖。
等一下......為什么iPhone 7
和iPhone 7 Plus
不在該設(shè)備列表中? 這是因?yàn)閕Tunes Connect上的屏幕截圖按顯示尺寸分類,而不是設(shè)備;由于iPhone 6和7都有4.7英寸顯示屏,iPhone 6 Plus和7 Plus都有5.5英寸顯示屏,包括屏幕截圖文件夾中的6和7都將在iTunes Connect中產(chǎn)生重復(fù)的屏幕截圖。
保存文件并關(guān)閉它。
返回終端并記下運(yùn)行fastlane snapshot init
后出現(xiàn)的說(shuō)明:
Open your Xcode project and make sure to do the following:
1) Add a new UI Test target to your project
2) Add the ./fastlane/SnapshotHelper.swift to your UI Test target
You can move the file anywhere you want
3) Call `setupSnapshot(app)` when launching your app
let app = XCUIApplication()
setupSnapshot(app)
app.launch()
4) Add `snapshot("0Launch")` to wherever you want to create the screenshots
這就是你接下來(lái)要做的事情。
再次在Xcode中打開mZone Poker.xcodeproj
,然后導(dǎo)航到File \ New \ Target
,在iOS選項(xiàng)卡的Test
部分中,選擇iOS UI Testing Bundle
,然后點(diǎn)擊Next \ Finish
。
返回mZone
文件夾的fastlane
目錄,然后將SnapshotHelper.swift
拖到Xcode中新創(chuàng)建的mZone PokerUITests
文件夾中。
打開mZone_PokerUITests.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")
此代碼將有助于在應(yīng)用執(zhí)行中的某些點(diǎn)創(chuàng)建屏幕截圖。 下面進(jìn)行詳細(xì)分解:
- 1)設(shè)置測(cè)試以拍攝快照并啟動(dòng)應(yīng)用程序。
- 2)啟動(dòng)的應(yīng)用程序?qū)⒆詣?dòng)點(diǎn)擊
Chip Count
文本區(qū)域(其可訪問(wèn)性標(biāo)識(shí)符在sb中預(yù)先設(shè)置為“chip count”
);然后它會(huì)自動(dòng)將數(shù)字10輸入該區(qū)域。 - 3)然后,應(yīng)用程序?qū)Ⅻc(diǎn)擊
Big Blind
文本區(qū)域(預(yù)先設(shè)置可訪問(wèn)性標(biāo)識(shí)符為“big blind”
)并在該區(qū)域中輸入數(shù)字100。 - 4)此時(shí)拍攝快照,以生成一個(gè)屏幕截圖,顯示應(yīng)用程序在用戶條目中的外觀。
- 5)自動(dòng)點(diǎn)擊
What Should I Do
? 按鈕,然后拍攝另一個(gè)屏幕截圖以顯示生成的alert。
關(guān)閉Xcode,打開Fastfile
并在error do |lane, exception|
上面添加以下代碼:
desc "Take screenshots"
lane :screenshot do
snapshot
end
在這里,您將創(chuàng)建一個(gè)名為screenshot
的新lane
,該lane
使用快照來(lái)截取您剛編輯的Snapfile
指定的屏幕截圖。
保存文件,返回終端并輸入:
fastlane screenshot
現(xiàn)在觀看...截圖被捕獲,您無(wú)需做任何其他事情! 享受跳過(guò)咕嚕咕嚕的工作的樂(lè)趣。
在該過(guò)程完成后,html
文件screenshots.html
應(yīng)在屏幕截圖完成時(shí)自動(dòng)打開,您可以滾動(dòng)瀏覽fastlane
所采取的所有屏幕截圖。
注意:為了使快照獲取屏幕截圖,它需要訪問(wèn)Snapfile中列出的設(shè)備的模擬器等效項(xiàng)。 如果您缺少該列表中的一個(gè)或多個(gè)設(shè)備,請(qǐng)轉(zhuǎn)到
Window \ Devices
,在Xcode中添加它們。 在左下角,您可以使用+添加新的模擬器。
現(xiàn)在,您只需使用一個(gè)終端命令即可獲得英語(yǔ)和法語(yǔ)的所有設(shè)備屏幕截圖 - 它不會(huì)比這更好!
注意:如果您看到有關(guān)模糊模擬器名稱的警告,則可能需要?jiǎng)h除某些模擬器或更改Snapfile的內(nèi)容。快照
snapshot
可以與Xcode的UI測(cè)試協(xié)同工作,為您提供應(yīng)用程序特定部分的屏幕截圖! 更有理由使用測(cè)試。
Creating the IPA file - 創(chuàng)建IPA文件
當(dāng)然,您不必再創(chuàng)建屏幕截圖,這很好,但提交過(guò)程中最耗時(shí)的部分實(shí)際上是構(gòu)建和簽署應(yīng)用程序。 猜猜看 - fastlane
也能做到這一點(diǎn)!
打開Fastfile
并在screenshot lane
的end
后添加以下代碼:
desc "Create ipa"
lane :build do
increment_build_number
gym
end
這將創(chuàng)建一個(gè)名為build
的lane
,它使用increment_build_number
將構(gòu)建數(shù)增加1(因此每個(gè)構(gòu)建號(hào)對(duì)于iTunes Connect的上傳要求是唯一的)和gym
以創(chuàng)建已簽名的ipa
文件。
保存Fastfile
,然后在終端的mZone
項(xiàng)目目錄中輸入以下命令:
fastlane build
這將調(diào)用您在上面添加的build lane
,以啟動(dòng)構(gòu)建過(guò)程。 成功完成后,打開mZone Project
文件夾。 你應(yīng)該看到簽名的ipa
文件:
完成! 這一命令負(fù)責(zé)處理iOS開發(fā)中最令人沮喪和最不了解的部分。
Seamless Delivery - 無(wú)縫傳遞
要將屏幕截圖,元數(shù)據(jù)和IPA文件上傳到iTunes Connect
,您可以使用已安裝并作為fastlane
的一部分進(jìn)行初始化的交付。
打開Fastfile
并在build lane
的end
后添加以下代碼:
desc "Upload to App Store"
lane :upload do
deliver
end
打開終端窗口并輸入以下命令:
fastlane upload
使用此命令,fastlane
將以HTML
頁(yè)面的形式創(chuàng)建預(yù)覽內(nèi)容。
如果一切看起來(lái)都不錯(cuò),請(qǐng)?jiān)诨卮饐?wèn)題“Does the Preview on path ‘./Preview.html’ look okay for you? (y/n)”
輸入y
。
此時(shí),您可以放松一下,讓計(jì)算機(jī)為您完成所有工作。
成功完成該過(guò)程后,您的終端窗口應(yīng)如下所示:
登錄您的iTunes Connect
帳戶。 應(yīng)上傳并準(zhǔn)備好所有屏幕截圖,描述和構(gòu)建版本1.0。
剩下的就是點(diǎn)擊大的“Submit for Review”
按鈕,你就完成了!
等一下......所有這一切都是關(guān)于手動(dòng)登錄并點(diǎn)擊一個(gè)按鈕的? 我以為我們正在自動(dòng)化所有的事情。
好吧,事實(shí)證明,發(fā)送可以自動(dòng)提交您的應(yīng)用程序以供審查!
首先,您需要更新上傳lane
:
desc "Upload to App Store and submit for review"
lane :upload do
deliver(
submit_for_review: true
)
end
然后,您需要使用以下內(nèi)容替換Deliverfile
的內(nèi)容,以便它包含提交所需的所有其他信息:
# 1
price_tier 0
# 2
app_review_information(
first_name: "YOUR_FIRST_NAME",
last_name: "YOUR_LAST_NAME",
phone_number: "YOUR_PHONE_NUMBER",
email_address: "YOUR_EMAIL_ADDRESS",
demo_user: "N/A",
demo_password: "N/A",
notes: "No demo account needed"
)
# 3
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
})
# 4
automatic_release false
# 5
app_icon './fastlane/metadata/AppIcon.png'
# 6
app_rating_config_path "./fastlane/metadata/itunes_rating_config.json"
在這里,您執(zhí)行以下操作:
- 1)將您的價(jià)格等級(jí)設(shè)置為0,表明它是一個(gè)免費(fèi)的應(yīng)用程序。
- 2)在
app_review_information
中使用適當(dāng)?shù)闹堤顚懬八男泻螅?code>app_review_information會(huì)向應(yīng)用審核小組提供您的聯(lián)系信息。 由于fastlane
當(dāng)前沒(méi)有布爾響應(yīng)密鑰來(lái)指示不需要模擬賬戶,因此您可以簡(jiǎn)單地指出評(píng)論說(shuō)明中不需要模擬賬戶。 - 3)提交信息會(huì)在選擇
“Submit For Review”
按鈕后回答您通常提出的問(wèn)題。 (您可以在here處找到其他可用的密鑰。) - 4)將
automatic_release
設(shè)置為false
允許您在應(yīng)用程序?qū)徍私邮芎笫謩?dòng)發(fā)布此版本的應(yīng)用程序。 - 5)將應(yīng)用程序圖標(biāo)文件位置提供給
fastlane
。 - 6)將
iTunes Rating Configuration
文件位置提供給fastlane
。
返回終端并再次運(yùn)行:
fastlane upload
幾分鐘后,fastlane
應(yīng)該表明您已成功提交您的應(yīng)用以供審核,iTunes Connect
應(yīng)該確認(rèn)!
注意:從fastlane版本1.111.0開始,即使在提交期間出現(xiàn)問(wèn)題,文本輸出也可能錯(cuò)誤地指示您的應(yīng)用已成功提交。 因此,您應(yīng)始終確認(rèn)您的應(yīng)用在iTunes Connect中顯示為等待審核。
另請(qǐng)注意,要從iTunes
中刪除mZone
, your app must have been approved by an app review。
批準(zhǔn)后,您可以暫時(shí)發(fā)布,然后在pricing and availability
部分選擇Remove from Sale
。 然后,導(dǎo)航到App Information
屏幕,滾動(dòng)到底部并選擇Delete
以永久刪除應(yīng)用程序。
Putting it All Together
您目前擁有單獨(dú)的lanes
,用于provisioning
,屏幕截圖,構(gòu)建和上傳到App Store。 雖然你總是可以一個(gè)一個(gè)地調(diào)用,但是你不想這樣做,對(duì)吧?
哦不,你想要一個(gè)能完成一切的命令。
打開Fastfile
并在upload lane
的end
后添加以下代碼:
desc "Provision, take screenshots, build and upload to App Store"
lane :do_everything do
provision
screenshot
build
upload
end
正如這條lane的描述和名稱所暗示的那樣,這條lane可以做到一切。
通過(guò)運(yùn)行此終端命令嘗試一下:
fastlane do_everything
做得好! 當(dāng)你坐下來(lái)放松時(shí),讓fastlane
完成所有繁重的工作。
今天,您學(xué)習(xí)了如何使用fastlane部署應(yīng)用程序并節(jié)省大量時(shí)間。
fastlane
還提供大量集成,讓您可以自定義lanes
,提供Slack
的實(shí)時(shí)反饋,執(zhí)行單元測(cè)試和部署TestFlight構(gòu)建。
要了解有關(guān)這個(gè)神奇工具的更多信息,請(qǐng)查看官方fastlane網(wǎng)站- the official fastlane website。
后記
本篇主要講述了fastlane自動(dòng)化打包上傳測(cè)試包,感興趣的給個(gè)贊或者關(guān)注~~~