前言
日復(fù)一日重復(fù)打包工作,是在浪費(fèi)寶貴的時(shí)間
自動化打包工具應(yīng)運(yùn)而生,是我們解放雙手的利器
安裝fastlane
安裝最新的Xcode命令行工具
?可以Developer Apple上手動下載對應(yīng)的
Command Line Tools
安裝
?fastlane官方推薦的xcode-select --install
安裝時(shí)最后結(jié)果是安裝不了
該軟件
安裝 fastlane
通過gem
安裝丰刊,放到/usr/local/bin
下面
sudo gem install -n /usr/local/bin fastlane
其他的安裝方法:(擴(kuò)展,可跳過)
以上:
方法1:是通過 Homebrew 軟件包管理器來進(jìn)行安裝,
方法2:就是我們最熟悉的方式,下載安裝包來進(jìn)行安裝,
方法3:是通過 RubyGems 來進(jìn)行移盆,RubyGems 是一個(gè)方便的 Ruby 程序包管理器,可以將一個(gè) Ruby 應(yīng)用程序打包到一個(gè) Gem 里伤为,作為一個(gè)安裝單元咒循。 一個(gè) Gem 就是一個(gè)封裝起來的應(yīng)用程序或代碼庫
配置環(huán)境變量(可跳過)
任意目錄如果可以執(zhí)行fastlane,說明你的環(huán)境變量已經(jīng)配置好钮呀,此處就無需配置
添加用戶環(huán)境變量
vim ~/.bash_profile
添加如下內(nèi)容
export PATH=/usr/local/bin:$PATH
保存退出剑鞍,使用 source ~/.bash_profile
來使配置立即生效
現(xiàn)在在項(xiàng)目根目錄下可以使用fastlane
了
fastlane使用
在項(xiàng)目根目錄下初始化
fastlane init
-
四個(gè)選項(xiàng)
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
中文解釋如下:
1 自動截屏。(幫助我們截取App的顯示到appstore上的 截圖) 2 自動發(fā)布beta到TestFlight上爽醋,用于內(nèi)測。 3 自動打包發(fā)布到AppStore上便脊。 4 手動設(shè)置蚂四。
上傳fir此處選擇的
4
初始化成功會生成如下目錄
配置相關(guān)文件
配置Gemfile
如果使用cocoapods要加上(注意帶上當(dāng)前安裝的pod的版本號,否則會報(bào)錯)
gem 'cocoapods', '~>1.8.3'
執(zhí)行
bundle install
第一次運(yùn)行 bundle install 時(shí)自動生成 Gemfile.lock 文件哪痰。以后每次運(yùn)行 bundle install 時(shí),如果 Gemfile 中的條目不變 bundle 就不會再次計(jì)算 gem 依賴版本號遂赠,直接根據(jù) Gemfile.lock 檢查和安裝 gem。如果出現(xiàn)依賴沖突時(shí)可以通過 bundle update 更新 Gemfile.lock
配置Fastfile
default_platform(:ios)
platform :ios do
before_all do
# 如果你用 pod install
cocoapods
end
desc "打包上傳ipa到fir.im"
lane :fir do
# 如果你沒有申請adhoc證書晌杰,sigh會自動幫你申請跷睦,并且添加到Xcode里
# sigh(adhoc: true)
# 以下兩個(gè)action來自fastlane-plugin-versioning,
# 第一個(gè)遞增 Build肋演,第二個(gè)設(shè)定Version抑诸。
# 如果你有多個(gè)target烂琴,就必須指定target的值,否則它會直接找找到的第一個(gè)plist修改
# 在這里我建議每一個(gè)打的包的Build都要不一樣蜕乡,這樣crash了拿到日志奸绷,可以對應(yīng)到ipa上
increment_build_number_in_plist(
target: 'TestDemo',
build_number: '5'
)
increment_version_number_in_plist(
target: 'TestDemo',
version_number: '1.0'
)
# gym用來編譯ipa
gym(
scheme: 'TestDemo',
export_method: "ad-hoc", # 指定打包方式 ["app-store", "ad-hoc", "package", "enterprise", "development", "developer-id"]
#teamID: "xxxxxx", # developer.apple.com 上查看
xcargs: "-allowProvisioningUpdates",
output_directory: './firim',
output_name: 'TestDemo.ipa'
)
# 上傳ipa到fir.im服務(wù)器,在fir.im獲取firim_api_token
firim(firim_api_token: "xxxxxxxxxxxxx") # token 在fir 上查看层玲。
end
desc "打包上傳testflight/app-store"
lane :tf do
increment_build_number_in_plist(
target: 'TestDemo'
)
increment_version_number_in_plist(
target: 'TestDemo',
version_number: '1.0'
)
# gym用來編譯ipa
gym(
scheme: 'TestDemo',
export_method: "app-store", # 指定打包方式
#teamID: "xxxxxx", # developer.apple.com 上查看
xcargs: "-allowProvisioningUpdates",
output_directory: './testflight',
output_name: 'TestDemo.ipa'
)
#upload_to_testflight
appstore # 上傳你的App iTunes Connect
end
end
關(guān)于build_number與version_number
1,version_number号醉、build_number都沒有設(shè)置,會自動獲取項(xiàng)目的version和build版本號辛块,并且都自動加1畔派。例如,fastlane打包前后版本號變化:ver1.0.2(Build 11)-> ver1.0.3(Build 12)润绵;
2,version_number設(shè)置了线椰、build_number沒設(shè)置,會自動獲取項(xiàng)目build版本號授药,build版本號+1士嚎;
3,version_number、build_number都設(shè)置了悔叽,那打包出來的版本號就是設(shè)置的版本號莱衩,不會自動+1;
添加兩個(gè)插件
fastlane add_plugin versioning
fastlane add_plugin firim
執(zhí)行打包
上傳fir.im
fastlane fir
fir
為Fastfile文件中lane :fir do
處設(shè)置的名字娇澎,可以為別的名字
執(zhí)行打包成功如下圖所示:
- 根目錄下
firim
文件夾下可看到ipa
文件
[圖片上傳中...(Xnip2019-10-10_15-01-59.jpg-bd69bf-1571314511771-0)]
- fir.im應(yīng)用列表笨蚁,多了剛上傳的項(xiàng)目
上傳testFlight
fastlane tf
問題
- Could not find action, lane or variable 'increment_build_number_in_plist'...
-
解決:
fastlane add_plugin versioning
參考:https://github.com/SiarheiFedartsou/fastlane-plugin-versioning/issues/20