Fastlane
是一個完全開源的項目,是一款為iOS
和Android
開發(fā)者提供的自動化構建工具砾莱,它可以幫助開發(fā)者將App
打包瑞筐、簽名、測試腊瑟、發(fā)布聚假、信息整理、提交App Store
等工作完整的連接起來闰非,實現(xiàn)完全自動化的工作流膘格,如果使用得當,可以顯著的提高開發(fā)者的開發(fā)效率财松,這是 GitHub 地址 和 官方文檔 瘪贱。
本文最終目的:
終端輸入
fastlane beta
自動打包ad-hoc
版本的ipa
包并自動上傳到蒲公英
。終端輸入
fastlane release
自動打包app-store
版本的ipa
包并自動上傳到iTunes Connect
辆毡。
1. 安裝 Fastlane
- 檢查
Ruby
版本菜秦,需要2.0
及以上版本,并且需要將gem
的source
改為https://gems.ruby-china.org/
舶掖,在終端輸入以下命令喷户。
// 查看 Ruby 版本
ruby -v
// 查看 gem 的source
gem sources
- 檢查
Xcode
命令行工具是否安裝,在終端輸入以下命令访锻,如果安裝過會有提示褪尝,如果沒裝過就會自動開始安裝。
xcode-select --install
- 開始安裝
Fastlane
期犬,在終端輸入以下命令河哑。
sudo gem install fastlane --verbose
- 如果安裝時出現(xiàn)錯誤無法安裝,就使用以下命令安裝龟虎。
sudo gem install -n /usr/local/bin fastlane
- 安裝完成后可以輸入以下命令查看版本來驗證是否安裝成功璃谨。
fastlane --version
2. 安裝蒲公英的 Fastlane 插件
-
fastlane
安裝完成以后,在終端輸入以下命令安裝蒲公英
插件鲤妥。
fastlane add_plugin pgyer
- 最后出現(xiàn)
Successfully installed plugins
表示安裝完成佳吞。
- 安裝完成以后,會在系統(tǒng)根目錄生成
Gemfile
和Gemfile.lock
這兩個文件棉安,這兩個文件不要刪掉底扳,不然插件就得重裝了。
3. 修改項目配置
- 用
Xcode
打開你的項目贡耽,然后打開Manage Schemes...
衷模。
- 然后將工程的
Scheme
后面的Shared
給勾上鹊汛。
- 需要將這個改動上傳到
git
倉庫,不要忽略掉這個文件阱冶,提交的文件路徑信息如下刁憋,如果你改完沒有提示有需要改動的提交,那就看一下.gitignore
里面是不是忽略掉了木蹬。
- 做這個改動的原因是至耻,后面可能會用到
Jenkins
+Fastlane
做持續(xù)集成,如果沒有這個文件镊叁,Jenkins
使用fastlane
編譯項目時會提示No schemes found in Xcode project or workspace
有梆,所以最好先加上。
4. 初始化 Fastlane 配置
- 打開終端意系,
cd
到你項目工程的根目錄(xcodeproj
的同級目錄),輸入以下命令:
fastlane init
初始化過程中會讓你輸入蘋果開發(fā)者賬號的賬號和密碼饺汹,這個信息會存儲在鑰匙串中蛔添,后續(xù)使用無需再輸入密碼。
初始化過程中還會檢測當前項目的
App Identifier
是否已經在Apple Developer
中兜辞,還會檢測當前App
是否已經在iTunes Connect
中迎瞧,如果都滿足的話,過程應該是比較順利的逸吵。初始化完成之后會在你項目工程的目錄下生成一個
fastlane
文件夾凶硅,里面是Fastlane
的一些配置文件。其中Appfile
里面存放了App
的基本信息包括App_Identifier
扫皱、AppID
足绅、Team_ID
等。Fastfile
是最重要的一個文件韩脑,在這個文件里面可以編寫和定制我們打包腳本的一個文件氢妈,所有自定義的功能都寫在這里。
5. 編輯 Fastlane 腳本文件
首先找到工程目錄下
fastlane
文件夾下的Fastlane
文件段多,如果想要了解其中內容的含義可以自己去官方文檔查一下首量,這里就不解釋了。使用編輯器打開
Fastlane
文件进苍,將所有內容刪除替換為以下內容加缘。
fastlane_version "xxx"
default_platform :ios
platform :ios do
desc "以 ad-hoc 方式打包并上傳到蒲公英"
lane :beta do
puts "自動生成 Provisioning Profiles 文件"
sigh(
# 指定輸出的文件夾地址
output_path: "./archive/sign",
# 是否為 AdHoc 證書(設為 false 或不寫默認為 AppStore 證書)
adhoc: true
)
puts "以 ad-hoc 方式打包"
gym(
# 指定打包所使用的輸出方式 (可選: app-store, package, ad-hoc, enterprise, development)
export_method: "ad-hoc",
# 指定項目的 scheme 名稱
scheme: "xxx",
# 指定輸出的文件夾地址
output_directory: "./archive/beta/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"),
# 指定打包方式 (可選: Release, Debug)
configuration: "Release"
)
puts "上傳 ipa 包到蒲公英"
pgyer(
# 蒲公英 API KEY
api_key: "xxx",
# 蒲公英 USER KEY
user_key: "xxx"
)
end
desc "以 app-store 方式打包并上傳到 iTunes Connect"
lane :release do
puts "自動生成 Provisioning Profiles 文件"
sigh(
# 指定輸出的文件夾地址
output_path: "./archive/sign"
)
puts "以 app-store 方式打包"
gym(
# 指定打包所使用的輸出方式 (可選: app-store, package, ad-hoc, enterprise, development)
export_method: "app-store",
# 指定項目的 scheme 名稱
scheme: "xxx",
# 指定輸出的文件夾地址
output_directory: "./archive/release/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"),
# 指定打包方式 (可選: Release, Debug)
configuration: "Release"
)
puts "上傳 ipa 包到 iTunes Connect"
deliver(
# 跳過截圖上傳
skip_screenshots: true,
# 跳過元數(shù)據(jù)上傳
skip_metadata: true,
# 跳過審核直接上傳
force: true
)
end
end
- 需要更改的地方我已經用
xxx
標注出來了,按照說明更改即可觉啊,更改完成后保存文件拣宏。
6. 開始自動打包并發(fā)布
打開終端,
cd
到你項目工程的根目錄(xcodeproj
的同級目錄)杠人。輸入以下命令蚀浆,即可開始自動打包并上傳到
蒲公英
缀程。
fastlane beta
- 輸入以下命令,即可開始自動打包并上傳到
iTunes Connect
市俊。
fastlane release
打包的
.ipa
包和dSYM
文件杨凑,以及生成的Provisioning Profiles
都在工程目錄下的archive
文件夾內,看上面的輸出地址就知道了摆昧。最后出現(xiàn)一個
successfully ??
就表示成功了撩满,有錯誤終端也會有提示,按照提示繼續(xù)修改配置就行了绅你。
Fastlane
還能實現(xiàn)很多自動化的功能伺帘,感興趣的自己去了解一下吧,這里有篇文章寫的很全面可以看一下: 小團隊的自動化發(fā)布-Fastlane帶來的全自動化發(fā)布 忌锯。
將來的你伪嫁,一定會感激現(xiàn)在拼命的自己,愿自己與讀者的開發(fā)之路無限美好偶垮。