iOS打包煩不煩?偶爾一次還好,但是一天三五次測(cè)試打包肯定讓人煩,不信你試試!
曾經(jīng)我以為自動(dòng)化打包很沒(méi)必要,所以一直都是Xcode中規(guī)中矩的打包操作然后發(fā)布;而如今我正在經(jīng)歷著一天之中反復(fù)的測(cè)試、回歸,有時(shí)一天打包發(fā)布個(gè)三五次,不斷的來(lái)回告訴測(cè)試妹子打包發(fā)布了去下載吧,有時(shí)妹子也煩。
同時(shí)不斷的重復(fù)性的build、 archive、導(dǎo)出、發(fā)布測(cè)試平臺(tái)實(shí)屬枯燥。再加上電腦卡、反應(yīng)慢,打個(gè)包一二十分鐘過(guò)去了也耽誤不少時(shí)間,所以自動(dòng)化打包迫在眉睫。
所以我們要實(shí)現(xiàn)一行命令自動(dòng)打包、發(fā)布、然后自動(dòng)發(fā)消息通知測(cè)試。
最后我們選擇了Fastlane 、 蒲公英發(fā)布測(cè)試;
現(xiàn)在我們只需要一行命令搞定讓枯燥的打包自動(dòng)進(jìn)行,自動(dòng)發(fā)布,自動(dòng)發(fā)消息通知測(cè)試,而且整過(guò)流程用時(shí)幾分鐘就能搞定,比以前大大的少了很多,真是大大的提高工作效率;
我們操作路線: Fastlane自動(dòng)打包 -> 蒲公英發(fā)布測(cè)試 ->釘釘
Fastlane 實(shí)現(xiàn)自動(dòng)打包,自動(dòng)發(fā)布到蒲公英平臺(tái)
蒲公英:App發(fā)布平臺(tái);
釘釘,建立的開發(fā)測(cè)試群,每次自動(dòng)打包發(fā)版后,系統(tǒng)機(jī)器人就會(huì)自動(dòng)提示如下:

是不是很方便?群里的每個(gè)人都知道了,再也不用我們?nèi)ネㄖ耍?/p>
接下來(lái)就按步驟去實(shí)現(xiàn)它吧。。。
Fastlane安裝與配置
Fastlane基于ruby環(huán)境自動(dòng)化工具集,它不是一個(gè)工具,它是一系列的工具的集合,基本上涵蓋了打包,簽名,測(cè)試,部署,發(fā)布,庫(kù)管理等等移動(dòng)開發(fā)中涉及到的內(nèi)容。 同時(shí)該套件也支持與 Jenkins 、CocoaPods、xctools 等其他第三方工具的集成。
- 1、安裝 Xcode command line tools:
xcode-select --install
安裝過(guò)會(huì)提示已經(jīng)安裝;
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
- 2、安裝Fastlane
sudo gem install fastlane
Successfully installed fastlane-2.193.1
Parsing documentation for fastlane-2.193.1
Done installing documentation for fastlane after 5 seconds
1 gem installed
- 3、fastlane 初始化
fastlane init
cd 打開工程所在目錄,執(zhí)行fastlane init出現(xiàn)如下提示:
[13:21:46]: What would you like to use fastlane for?
1. Automate screenshots
2. ?? Automate beta distribution to TestFlight
3. Automate App Store distribution
4. Manual setup - manually setup your project to automate your tasks
選擇4 ,手動(dòng)設(shè)置工程文件;然后一路enter

然后可看到工程目錄下多了幾個(gè)文件:

其中Appfile、Fastfile就是我們需要修改的文件;
- Appfile:App相關(guān)的信息,寫以下三項(xiàng)就可以:
app_identifier "com.XX.XX"
apple_id "appid"
team_id "teamid"
- Fastfile:描述打包相關(guān)的配置信息,初始內(nèi)容如下:
default_platform(:iOS)
platform :iOS do
desc "Description of what the lane does"
lane :custom_lane do
# add actions here: https://docs.fastlane.tools/actions
end
end
一個(gè)lane可理解為就是一個(gè)任務(wù),我們打包發(fā)布到蒲公英是一個(gè)任務(wù),打包發(fā)布到App Store也是一個(gè)任務(wù);
lane中可添加多個(gè)action,也就是具體的操作,比如打包方法操作是一個(gè)action,發(fā)布蒲公英操作也是一個(gè)action;
Fastlane本身自有的一些lane,可以在不同的 階段做一些額外的操作:
before_all,就是在執(zhí)行一次腳本之前首先執(zhí)行的代碼,我們可以在這里面執(zhí)行一些公共的東西,比如git_pull,cocoapods。
after_all, 成功結(jié)束之后,處理共有的后置邏輯。
before_each,每次執(zhí)行 lane 之前都會(huì)執(zhí)行一次。
after_each,每次執(zhí)行 lane 之后都會(huì)執(zhí)行一次。
error,在執(zhí)行上述情況任意環(huán)境報(bào)錯(cuò)都會(huì)中止并執(zhí)行一次。
我要發(fā)布到蒲公英,所以完整的配置如下:
default_platform(:iOS)
platform :iOS do
lane :hs_test do
# add actions here: https://docs.fastlane.tools/actions
gym(
clean: true,
output_directory: './fastlane/build',
output_name:"XX.ipa",
scheme: 'XXX',
configuration: 'Debug',###########
# sdk:"iOS 12.0",
# archive_path:"./fastlane/Archive",
include_symbols:true,
export_options: {
method: 'development',#測(cè)試包
provisioningProfiles: {
"com.xxxx.xxx" => "20210906_dev" #測(cè)試打包描述文件
},
}
)
updateVersionDes = "提到蒲公英的版本更新信息;"
pgyer(
api_key: "蒲公英API Key",
user_key: "蒲公英user_key"
update_description: updateVersionDes
)
end
end
然后再終端中輸入
fastlane hs_test (可理解為就是我們的任務(wù)名)
然后剩下的就不用我們管了,它會(huì)自動(dòng)的幫我們處理余下的所有工作;
參數(shù)解釋:
- gym:fastlane 封裝的打包方法、會(huì)自動(dòng)處理打包、簽名等操作;
配置項(xiàng)
clean:每次執(zhí)行前是否清空工程;
output_directory:輸出文件目錄
output_name:App名字’
scheme:App scheme
configuration:The configuration to use when building the app. Defaults to 'Release'
export_options:導(dǎo)出時(shí)配置項(xiàng),及發(fā)布證書相關(guān);
我用到的不多,其他參數(shù)還很多具體參看官方文檔吧。
至此關(guān)于Fastlane 配置完成了,現(xiàn)在就可以愉快的打包了,然后在工作目錄中看到生成的IPA包。
蒲公英設(shè)置
蒲公英支持Webhook機(jī)制,可以將事件消息通知分發(fā)出去;所以當(dāng)我們發(fā)布新版本時(shí)可以給釘釘或微信發(fā)送消息,通知App版本更新;
打開指定的應(yīng)用,選擇【內(nèi)測(cè)分發(fā)】-【W(wǎng)ebhook設(shè)置】創(chuàng)建新的Webhook


釘釘設(shè)置
打開釘釘群【設(shè)置】-【智能群助手】-創(chuàng)建機(jī)器人

復(fù)制Webhook URL https://oapi.dingtalk.com/robot/send?access_token=000351XXXXXXXXXX,到蒲公英Webhook URL ;
至此所有配置算是完成了,現(xiàn)在我們就可以實(shí)現(xiàn)一行命令打包,然后去逍遙自在了_;
APP自動(dòng)化方面操作功能很強(qiáng)大,能做的還有很多,今天只是初步實(shí)現(xiàn)測(cè)試環(huán)境自動(dòng)化打包,更高級(jí)的用法還有待繼續(xù)摸索。