1.前言
前段時(shí)間應(yīng)測(cè)試要求,需要重復(fù)測(cè)試App安裝啟動(dòng),為了避免重復(fù)性的工作和節(jié)省時(shí)間,所以就想到了用 Fastlane 自動(dòng)化打包上傳到蒲公英方便測(cè)試安裝。
2.簡(jiǎn)介
Fastlane 是一套使用Ruby寫(xiě)的自動(dòng)化工具集,用于iOS和Android的自動(dòng)化打包、發(fā)布等工作,可以節(jié)省大量的時(shí)間。
3.安裝
3.1 安裝正確的Ruby版本,需要2.0及以上版本:
ruby -v
3.2 然后檢查 Xcode 命令行工具是否安裝:
xcode-select --install
報(bào)如下錯(cuò)誤,說(shuō)明已安裝:
3.3 通過(guò)RubyGem安裝 Fastlane 工具集:
sudo gem install fastlane
執(zhí)行命令時(shí),輸入用戶(hù)密碼,如下圖安裝完成:
4.配置
4.1 打開(kāi)終端,進(jìn)入你的工程目錄,然后執(zhí)行 fastlane init:
執(zhí)行過(guò)程中,需要輸入對(duì)應(yīng)的蘋(píng)果開(kāi)發(fā)賬號(hào)。接下來(lái),出現(xiàn)確認(rèn)提示,確認(rèn)無(wú)誤輸入y:
4.2 Fastlane 初始化完成后,工程目錄下會(huì)自動(dòng)生成 fastlane
文件夾,如下所示:
-
metadata
: 目錄:存放 App 元數(shù)據(jù),包括 App 簡(jiǎn)介,Icon,Copyright 等; -
screenshots
: 目錄:顧名思義,存放 App store 中的截圖; -
Appfile
:用于指定app_identifier
,apple_id
,team_id
; -
Deliverfile
:用于指定跟 App 版本發(fā)布相關(guān)的信息,除了apple_identifier
外,還包括submit_for_review
,automatic_release
等可配置項(xiàng),基本覆蓋 iTunes Connect 里面的所有選項(xiàng) -
Fastfile
:用于編寫(xiě)邏輯腳本,使用 ruby 語(yǔ)言,例如首先執(zhí)行 cocoapods 更新第三方依賴(lài)庫(kù),然后執(zhí)行 pem 更新相關(guān)證書(shū),接著通過(guò) gym 來(lái)編譯并打包 ipa 文件,最后通過(guò) deliver 發(fā)布到 iTunes Connect 中,并提交審核。具體邏輯按照開(kāi)發(fā)者需求自行設(shè)計(jì)。
推薦使用Sublime Text工具打開(kāi) Appfile
、Deliverfile
和 Fastfile
三個(gè)配置文件,首次打開(kāi)是以文本格式顯示的,可設(shè)置文件默認(rèn)格式為Ruby。
進(jìn)入 fastlane
文件,執(zhí)行如下命令:
open -a /Applications/Sublime\ Text.app/ Appfile Deliverfile Fastfile
操作步驟:在Sublime Text 工作窗口,點(diǎn)擊右下角Plain Text區(qū)域,出現(xiàn)的下拉菜單中選擇Ruby,之后文件內(nèi)容將以Ruby語(yǔ)法格式打開(kāi),便于編輯查看。三個(gè)文件需要分別設(shè)置默認(rèn)格式。
4.3 安裝蒲公英的 Fastlane 插件
在終端中,輸入以下命令,即可安裝蒲公英的 fastlane 插件:
fastlane add_plugin pgyer
執(zhí)行過(guò)程中,出現(xiàn)確認(rèn)提示,確認(rèn)無(wú)誤輸入y,接下來(lái),需要輸入兩次用戶(hù)密碼即可。
稍等幾秒鐘,如果出現(xiàn)類(lèi)似下面的信息,就說(shuō)明安裝成功了:
5.執(zhí)行
5.1 在 Fastlane 配置蒲公英插件
首先,進(jìn)入工程目錄,并打開(kāi) Fastlane 的配置文件(一般在 fastlane/Fastfile),這里我們用 Sublime Text打開(kāi)。
然后,我們找到我們?cè)谟玫墓ぷ髁鳎╝ction),在 gym 指令后,加入蒲公英插件的配置信息。例如:
desc "發(fā)布 測(cè)試版本 到 蒲公英"
lane :beta_pgy do
gym(export_method: "ad-hoc")
pgyer(api_key: "d066f633dc2d970eb230dba7823ff022",
user_key: "4477d913a078c11df32be931523619dc",
update_description: "fastlane自動(dòng)打包上傳測(cè)試 ",
password: "123456",
install_type: "2")
end
注意:
以上的 api_key
和 user_key
,請(qǐng)開(kāi)發(fā)者在自己賬號(hào)下的 應(yīng)用管理 - App概述 - API 中可以找到,并替換到以上相應(yīng)的位置。password
為安裝時(shí),需要輸入的密碼,install_type
為安裝類(lèi)型。
5.2 打包并自動(dòng)上傳 App 到蒲公英
bundle exec fastlane beta_pgy
執(zhí)行過(guò)程中,如果出現(xiàn)如下錯(cuò)誤,需要在工程目錄下的Gemfile文件中添加如下信息:
gem 'cocoapods'
保存文件后,重新執(zhí)行下面的命令:
bundle exec fastlane beta_pgy
稍等幾十秒,最后如果出現(xiàn)類(lèi)似下面的信息,就說(shuō)明Fastlane打包上傳成功了,可以進(jìn)入蒲公英【我的應(yīng)用】掃碼下載。打包上傳成功截圖如下:
5.3 配置文件
有時(shí)候我們希望把賬號(hào)信息、更新描述和版本號(hào)等信息單獨(dú)放在一個(gè)配置文件。在這里Fastlane給我們提供了相應(yīng)的解決方案。
我們可以在工程目錄下創(chuàng)建一個(gè)名為 .env
的文件,自定義所需的臨時(shí)變量,然后Fastlane的三個(gè)配置文件(Appfile
、Deliverfile
和Fastfile
)分別從.env
文件中讀取配置信息。
關(guān)于ENV用法可參考以下鏈接:
https://docs.fastlane.tools/advanced/#environment-variables
https://github.com/bkeepers/dotenv
.env
文件為影藏文件,可使用如下命令查看:
ls -a
截圖如下:
下面給出的 .env
文件配置可做參考:
.env
:
#APP唯一標(biāo)識(shí)符
APP_IDENTIFIER = "xxx.xxx.TestGitProject"
#發(fā)布版本號(hào)
APP_VERSION_RELEASE = "1.1.0"
#新版本修改記錄
RELEASE_NOTES = "1) 升級(jí)測(cè)試第一行\(zhòng)n2) 升級(jí)測(cè)試第二行"
#蒲公英 更新描述
PGY_UPDATE_DESCRIPTION = "fastlane自動(dòng)打包上傳測(cè)試"
#自動(dòng)提交審核
SUBMIT_FOR_REVIEW = false
#審核通過(guò)后立刻發(fā)布
AUTOMATIC_RELEASE = false
#蘋(píng)果開(kāi)發(fā)者賬號(hào)
APPLE_ID = "xxx@xxx.xxx"
#蘋(píng)果開(kāi)發(fā)者帳號(hào)密碼
FASTLANE_PASSWORD = "xxxxxx"
#套裝ID
TEAM_ID = "94xxxxx02"
#應(yīng)用名稱(chēng)
SCHEME_NAME = "TestGitProject"
#APP元數(shù)據(jù)及截圖存放路徑
METADATA_PATH = "./metadata/TestGitProject"
SCREENSHOTS_PATH = "./screenshots/TestGitProject"
#APP元數(shù)據(jù)及截圖下載時(shí),直接覆蓋原有數(shù)據(jù),不詢(xún)問(wèn)
DELIVER_FORCE_OVERWRITE = true
Appfile
、Deliverfile
和Fastfile
配置文件修改如下:
Appfile
:
app_identifier ENV['APP_IDENTIFIER'] # The bundle identifier of your app
apple_id ENV['APPLE_ID'] # Your Apple email address
team_id ENV['TEAM_ID'] # Developer Portal Team ID
Deliverfile
:
app_identifier ENV['APP_IDENTIFIER'] # The bundle identifier of your app
username ENV['APPLE_ID'] # your Apple ID user
Fastfile
:
desc "發(fā)布 測(cè)試版本 到 蒲公英"
lane :beta_pgy do
gym(scheme: ENV['SCHEME_NAME'],
export_method: "ad-hoc",
silent: true, # 隱藏沒(méi)有必要的信息
clean: true # 在構(gòu)建前先clean
)
pgyer(api_key: ENV['PGY_API_KEY'],
user_key: ENV['PGY_USER_KEY'],
update_description: ENV['PGY_UPDATE_DESCRIPTION'],
password: "123456",
install_type: "2")
end
配置文件截圖如下:
修改完上述配置文件后,重新執(zhí)行以下命令:
bundle exec fastlane beta_pgy
6.其他
Fastlane 如何實(shí)現(xiàn)多 Target 自動(dòng)化打包發(fā)布,以及如何配置 Appfile、Deliverfile 和 Fastfile 等配置文件,發(fā)布和構(gòu)建版本號(hào)自增,修改更新內(nèi)容,自動(dòng)上傳蘋(píng)果商店和自動(dòng)提交審核,可參考另一篇文章:Fastlane 實(shí)現(xiàn)多 Target 自動(dòng)化打包發(fā)布
參考鏈接: