Fastlane是一套使用Ruby寫的自動(dòng)化工具集,旨在簡(jiǎn)化Android和iOS的部署過(guò)程,自動(dòng)化你的工作流。它可以簡(jiǎn)化一些乏味、單調(diào)、重復(fù)的工作,像截圖、代碼簽名以及發(fā)布App
一行命令實(shí)現(xiàn)打包工作,不需要時(shí)時(shí)等待操作下一步,節(jié)省打包的時(shí)間去做其他的事。
Fastlane的優(yōu)勢(shì)主要是下面幾方面:
-
避免頻繁修改配置導(dǎo)致可能出現(xiàn)的Release/Debug環(huán)境錯(cuò)誤,如果沒有檢查機(jī)制,那將是災(zāi)難,即使有檢查機(jī)制,我們也不得不重新打包,浪費(fèi)了一次打包時(shí)間。畢竟人始終沒有程序可靠,可以告別便利貼了。
-
通過(guò)配置自動(dòng)上傳到蒲公英,fir.im內(nèi)測(cè)平臺(tái)進(jìn)行測(cè)試分發(fā),也可以直接上傳到TestFlight,iTunes Connect。
-
證書的同步更新,管理,在新電腦能夠迅速具備項(xiàng)目打包環(huán)境。
一、安裝xcode命令行工具
終端執(zhí)行xcode-select --install,如果沒有安裝,會(huì)彈出對(duì)話框,點(diǎn)擊安裝。如果提示xcode-select: error: command line tools are already installed, use "Software Update" to install updates表示已經(jīng)安裝
xcode-select --install
二、安裝Fastlane
終端執(zhí)行sudo gem install fastlane -NV使用gem安裝的或brew cask install fastlane安裝完了終端執(zhí)行fastlane --version,確認(rèn)下是否安裝完成和當(dāng)前使用的版本號(hào)。
sudo gem install fastlane -NV
fastlane --version
三、初始化Fastlane
1.終端cd到你的項(xiàng)目目錄執(zhí)行,再執(zhí)行fastlane init
cd [工程根目錄]
fastlane init

執(zhí)行fastlane init.png
2.這里會(huì)彈出四個(gè)選項(xiàng),問(wèn)你想要用Fastlane做什么? 之前的老版本是不用選擇的。選幾都行,后續(xù)我們自行根據(jù)需求完善就可以,直接選3執(zhí)行(最新的Fastlane需要選2)
3.終端輸入AppleID 賬號(hào)和密碼,選擇對(duì)應(yīng)的App Store Connect teams和Developer Portal

1.png
4.登錄成功后會(huì)提示你是否需要下載你的App的metadata,輸入y執(zhí)行等待就可以,最終終端執(zhí)行完畢之后返回bundle update,則表示成功下載

2.png
5.打開工程,在設(shè)置Current Project Version 設(shè)置1和 Versioning System設(shè)置Apple Generic

3.png
6.新開一個(gè)終端窗口,進(jìn)入工程根目錄,更新 bundle(會(huì)提示輸入密碼,這里輸入開機(jī)密碼)
cd [工程根目錄]
bundle update

4.png
當(dāng)返回Bundle updated!則表示bundle更新完成
7.到這一步前置配置全部完成
四、蒲公英 插件安裝
1.進(jìn)入工程根目錄
cd [工程根目錄]
2.安裝蒲公英的 fastlane 插件
fastlane add_plugin pgyer
3.會(huì)詢問(wèn)fastlane 是否應(yīng)該修改路徑中的 Gemfile,輸入y執(zhí)行等待,當(dāng)返回Successfully installed plugins,則表示安裝插件成功

5.png
五、fastfile 配置
-
Fastlane 會(huì)自動(dòng)在工程根目錄中生成 fastlane 目錄,其中就會(huì)有 fastlane 的配置文件 fastlane/Fastfile,F(xiàn)astfile可以選擇各種文本工具打開,個(gè)人推薦使用VSCode,編輯使用更方便
-
目前配置的蒲公英的Fastfile,不同的項(xiàng)目,開發(fā)人員,蒲公英賬號(hào),只需要修改對(duì)應(yīng)的配置即可
-
更多信息查看蒲公英文檔
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:ios)
platform :ios do
desc "用于發(fā)布到蒲公英"
lane :adHoc do
#—————————————————————根據(jù)實(shí)際項(xiàng)目對(duì)應(yīng)修改—————————————————————————
#工程名稱
scheme = "xxxx"
bundleID = "xxxxx"
#app名稱
appName = "xxxxx"
#蒲公英獲取key
api_key = "xxxx"
#user_key = "xxxx"(最新版本不需要user_key)
#蒲公英下載地址
downloadURL = "xxxx"
#—————————————————————————————————————————————————————————————
puts "*************| 開始上傳蒲公英... |*************"
#輸入蒲公英上傳ipa包后輸入的版本描述信息
puts "請(qǐng)輸入版本描述:"
descStr = STDIN.gets
#指定打包環(huán)境 Debug、Test、Release、PreRelease
puts "請(qǐng)指定需要打包的方式:1:Debug 2:Test 3:PreRelease 4:Release"
configurationType = STDIN.gets
if configurationType == "4\n"
configurationName = "Release"
elsif configurationType == "3\n"
configurationName = "PreRelease"
elsif configurationType == "2\n"
configurationName = "Test"
elsif configurationType == "1\n"
configurationName = "Debug"
end
#構(gòu)建打包 也叫g(shù)ym
build_app(
clean: true, #打包前clean
scheme: scheme,
workspace: "#{scheme}.xcworkspace",
export_method: "ad-hoc",
include_bitcode: false,
configuration: configurationName,#打包方式
output_directory: "./ipa", #導(dǎo)出路徑 文件夾沒有的話會(huì)自動(dòng)新建一個(gè)
silent: true, #在構(gòu)建時(shí)隱藏終端不必要輸出的信息
output_name: "#{scheme}_#{Time.now.strftime('%Y%m%d%H%M')}.ipa"
)
pgyer(api_key: api_key, update_description: "更新內(nèi)容:#{descStr}")
notification(title: "提示", message: "#{appName} adHoc 打包成功: #{downloadURL}", open: downloadURL)
puts "*************| 上傳蒲公英成功?? |*************"
end
end
六、打包到蒲公英
cd [工程根目錄]
fastlane adHoc
-
終端執(zhí)行
astlane adHoc中的adHoc,是對(duì)應(yīng)的Fastfile文件中的lane命名

6.png
-
注意可以通知設(shè)置Fastfile文件中的configuration 來(lái)設(shè)置打包環(huán)境,而不需要手動(dòng)選擇,我已經(jīng)在Fastfile配置中加了選擇功能,根據(jù)對(duì)應(yīng)的環(huán)境選擇即可 -
等待終端執(zhí)行結(jié)果即可,打包到蒲公英成功時(shí),會(huì)有對(duì)應(yīng)的通知提示,終端也會(huì)返回
fastlane.tools finished successfully ??