一、FastLane介紹
FastLane是一種配置iOS和Android自動(dòng)化Beta部署和發(fā)布的最簡(jiǎn)單的方法之一。它可以簡(jiǎn)化一些乏味、單調(diào)阻问、重復(fù)的工作,像截圖沦疾、代碼簽名以及發(fā)布App称近。
你可以從項(xiàng)目工程中創(chuàng)建FastLane文件開始哮塞,在FastLane文件里定義了Beta部署或App Store發(fā)布過(guò)程刨秆,如下:
省時(shí):每次將新版本推送到商店或Beta測(cè)試服務(wù)時(shí),都可節(jié)省時(shí)間忆畅。
集成:集成當(dāng)前開發(fā)環(huán)境中所有存在的工具和服務(wù)衡未。
簡(jiǎn)單:簡(jiǎn)單的設(shè)置助手,幾分鐘配置即可使用缓醋。
運(yùn)行:基于你的app和數(shù)據(jù)如失,運(yùn)行在本地機(jī)器上。
支持:支持iOS褪贵、Mac以及Android 應(yīng)用。
自定義:根據(jù)自身需要擴(kuò)展和定制fastlane葫督,不依賴任何人竭鞍。
配置:可以在任何電腦上配置橄镜,包括CI服務(wù)器偎快。
實(shí)際上fastlane是一套工具集,包含如下工具:
1)?測(cè)試工具
scan:自動(dòng)運(yùn)行測(cè)試工具洽胶,可以生成漂亮的HTML報(bào)告
2)?生成證書晒夹、配置文件工具
cert:自動(dòng)創(chuàng)建iOS代碼簽名證書(.cert文件)
sigh:自動(dòng)創(chuàng)建、更新姊氓、下載丐怯、修復(fù)Provisioning Profile
pem:自動(dòng)生成、更新推送配置文件
3)?截圖翔横、描設(shè)備邊框
deliver:上傳截圖读跷、元數(shù)據(jù)、App到iTunesConnect
snapshot:使用UI test功能實(shí)現(xiàn)自動(dòng)截圖
frameit:在截圖的圖片外層套上物理設(shè)備邊框
4)?自動(dòng)化編譯工具
gym:自動(dòng)化編譯工具
5)?App公測(cè)工具
pilot:管理TestFlight測(cè)試用戶禾唁,上傳二進(jìn)制文件
firim:管理firim
1.5 FastLane基礎(chǔ)環(huán)境
1)?Fastlane其實(shí)是一個(gè)Ruby腳本的集合效览,首先查看是否安裝Ruby
ruby -v
2)?檢測(cè):確保已安裝最新Xcode命令行工具
xcode-select? --install
3)?安裝:安裝fastlane命令行
brew cask install fastlane
4)?初始化:進(jìn)入工程目錄,初始化fastlane
fastlane init
在此過(guò)程中荡短,fastlane將會(huì)自動(dòng)檢查你的工程項(xiàng)目丐枉,然后提示輸入為輸入信息及驗(yàn)證已輸入信息是否正確。
├── Appfile
├── Deliverfile
├── Fastfile
├── Pluginfile
├── README.md
├── Snapfile
├── SnapshotHelper.swift
├── metadata
│?? ├── copyright.txt
│?? ├── itunes_rating_config.json
│?? ├── primary_category.txt
│?? ├── primary_first_sub_category.txt
│?? ├── primary_second_sub_category.txt
│?? ├── review_information
│?? ├── secondary_category.txt
│?? ├── secondary_first_sub_category.txt
│?? ├── secondary_second_sub_category.txt
├── report.xml
├── screenshots
└──README.txt
1)?Fastfile:自動(dòng)化執(zhí)行配置文件
2)?Appfile:存儲(chǔ)App公共信息
3)?Deliverfile:存儲(chǔ)App發(fā)布信息
1)?查看支持的所有插件:fastlane search_plugins
2)?安裝插件:fastlane add_plugin [name]
3)?常用插件安裝:
fastlane add_plugin versioning(設(shè)置App插件號(hào)車間)
fastlane add_plugin firim(設(shè)置測(cè)試版發(fā)布平臺(tái)firim)
1)?瘦锹、App Store屏幕截圖可能是說(shuō)服潛在用戶下載或購(gòu)買應(yīng)用的最重要事情之一。然而闪盔,許多app的屏幕截圖做得并不好弯院,因?yàn)闇?zhǔn)備圖片和展示圖片會(huì)花費(fèi)很多時(shí)間 。我們主要會(huì)基于以下考慮:
App Store展示的截圖是否和最新的app設(shè)計(jì)一致泪掀?
App截圖的本地化語(yǔ)言顯示是否一致听绳?
App截圖不完整是否導(dǎo)致圖片顯示的差異?
屏幕截圖在各種設(shè)備上顯示內(nèi)容是否存在差異族淮?
對(duì)于這些問(wèn)題,fastlane都可以進(jìn)行快速的自動(dòng)化處理,并產(chǎn)生我們所期望的結(jié)果祝辣。而手動(dòng)截圖最大的缺點(diǎn)是我們需要在每次發(fā)布app之前不斷的重復(fù)相同的流程贴妻,或許因?yàn)橐粋€(gè)拼寫錯(cuò)誤、一個(gè)本地語(yǔ)言的增加或刪除蝙斜、一個(gè)頁(yè)面更新等名惩,我們都得從頭再來(lái),真是太可怕了孕荠。
2)?娩鹉、Fastlane在snapshot自動(dòng)抓取app截圖的過(guò)程中,我們可以:
抓取不同設(shè)備稚伍、不同語(yǔ)言的截圖弯予。
在抓取截圖的過(guò)程中,我們可以省下很多時(shí)間做其他事情个曙。
一次完整的配置锈嫩,可以和其他協(xié)同開發(fā)成員共享。
生成的所有截圖可以通過(guò)網(wǎng)頁(yè)展示出來(lái)垦搬。
3)?呼寸、抓取截圖完成后,漂亮的HTML頁(yè)面顯示如下所示:
snapshot使用UI Tests功能來(lái)抓取App上的圖片猴贰。在開始使用UITests時(shí)对雪,可以使用UI Test錄制,只需按下Xcode底部的紅色按鈕米绕。這是瑟捣,xcode將會(huì)記錄下你的操作代碼。實(shí)際操作步驟如下:
1)?在xcode工程中創(chuàng)建一個(gè)新的UI測(cè)試目標(biāo)义郑。
2)?在工程目錄下運(yùn)行:fastlane snapshot init蝶柿。
3)?將生成的./SnapshotHelper.swift文件添加到UI測(cè)試文件目錄下。
4)?添加橋接頭文件到我們的測(cè)試類中(只適用于OC代碼)非驮。
5)?在UI測(cè)試類中交汤,按下錄制按鈕開始錄制我們的交互操作。
6)?在UI測(cè)試類需要截圖的地方添加代碼:
Swift:snapshot(“01LoginScreen”);
OC:[Snapshotsnapshot:@”01LoginScreen” waitForLoadingIndicatore:YES];
7)?在setup()函數(shù)中添加如下代碼:
swift:letapp = XCUIApplication()
setupSnapshot(app)
app.lanuch()
oc:XCUIAppication*app = [[XCUIApplication alloc] init];
[Snapshot setupSnapshot:app];
[app launch];
8)?在運(yùn)行setup()函數(shù)過(guò)程中劫笙,將生成一個(gè)名為Snapfile的文件芙扎,這個(gè)文件在運(yùn)行fastlane snapshot命令的時(shí)候?qū)?huì)被加載,內(nèi)容如下所示:
# A list of devices you want totake the screenshots from
# devices([
#??"iPhone 6",
#??"iPhone 6 Plus",
#??"iPhone 5",
#??"iPhone 4s",
#??"iPad Retina",
#??"iPad Pro"
# ])
languages([
"en-US",
"de-DE"
])
… …
注:如果沒(méi)有生成Snapfile文件填大,使用命令行$ fastlane snapshot init生成戒洼。
9)如果已經(jīng)安裝fastlane,我們可以很容易的通過(guò)snapshot截圖允华。
fastlane snapshot
使用fastlanesnapshot生成截圖后圈浇,我們就開始上傳圖片到iTunes Connect寥掐。安裝fastlane并且在工程根目錄下運(yùn)行snapshot init命令,我們會(huì)在工程根目錄下看到fastlane/screenshots和fastlane/metadata目錄磷蜀。我們截取的圖片就保存在fastlane/screenshots中召耘。
上傳截圖很簡(jiǎn)單,只需要運(yùn)行:
fastlane deliver
2.4使用Fastfile文件實(shí)現(xiàn)自動(dòng)化
如果我們將上面的分步操作組合在一起執(zhí)行褐隆,那么在開發(fā)團(tuán)隊(duì)中的任何人都可以上傳新的截圖污它,而通過(guò)對(duì)Fastfile文件的配置幫助我們實(shí)現(xiàn)了這一點(diǎn),配置如下:
lane :screenshots do
snapshot
deliver
end
frameit將幫助我們?yōu)锳pp截圖構(gòu)建漂亮的設(shè)備邊框庶弃,只需要運(yùn)行命令:
fastlane frameit
在此不在詳述具體過(guò)程衫贬,效果如下(相當(dāng)漂亮):
fastlane通過(guò)gym來(lái)構(gòu)建app歇攻,需要在fastfile中添加:
lane :beta do
gym(scheme: “MyApp”)
end
然后運(yùn)行:fastlanebeta固惯,我們?cè)诋?dāng)前目錄下將會(huì)看到[ProductName].ipa文件。
在編譯打包完成后掉伏,我們就可以上傳測(cè)試版本到測(cè)試服務(wù)器上了缝呕,這時(shí)修改3.1中的配置為:
lane :beta do
match(type: “appstore”)
gym(scheme:”MyApp”)
testflight
slack(message: “成功上傳測(cè)試版到testflight”)
end
打開Fastfile文件,添加如下內(nèi)容:
lane :upload_firim do
sigh(adhoc: true)#申請(qǐng)adhoc證書
increment_build_number_in_plist(target: [target_name])
increment_version_number_in_plist(
target: [target_name],
version_number: '7.1.3'
)
gym(#gym用于編譯ipa
output_directory: './firim',
export_options: {
method: "ad-hoc", #默認(rèn),可以不指定
thinning: ""
}
)
firim(firim_api_token: [firim_api_token])#上傳ipa到fir.im服務(wù)器
end
輸入命令:fastlaneupload_firim一鍵上傳斧散。
fastlane通過(guò)gym來(lái)構(gòu)建app,需要在fastfile中添加:
lane :appstore do
gym(scheme: “MyApp”)
end
然后運(yùn)行:fastlaneappstore鸡捐,我們?cè)诋?dāng)前目錄下將會(huì)看到[ProductName].ipa文件栈暇。
在編譯打包完成后,我們就可以上傳測(cè)試版本到測(cè)試服務(wù)器上了箍镜,這時(shí)修改4.1中的配置為:
lane :appstore do
sigh
increment_build_number_in_plist(target: [target_name])
increment_version_number_in_plist(
target: [target_name],
version_number: '7.1.3'
)
gym(# 指定輸出目錄
output_directory: './build',
)
deliver(force: true) # 上傳所有信息到App Store
end
輸入命令:fastlaneappstore一鍵上傳源祈。
轉(zhuǎn)載來(lái)自:http://blog.csdn.net/cdut100/article/details/76381605