一、fastlane簡介
Fastlane是一套使用Ruby寫的自動化工具集,用于iOS和Android的自動化打包、發布等工作。
Github:https://github.com/fastlane/fastlane
文檔:https://docs.fastlane.tools/
工具集說明如下:
-
scan
- 自動運行測試工具,并且可以生成HTML文檔報告
-
cert
- 自動創建和管理iOS簽名證書(Certificates)
-
sigh
- 創建、更新、下載、修復Provisioning Profiles的工具
-
pem
- 自動生成、更新推送配置文件
-
snapshot
- 使用Xcode7的UITest功能實現自動化截圖
-
frameit
- 把截取的圖片套上一層外邊框
-
gym
- 自動化編譯工具,用來打包ipa或者pkg文件
-
deliver
- 自動上傳截圖、App的元數據、二進制(ipa)文件到iTunes Connect
-
produce
- 在iTunes Connect或者Apple Developer Center上創建新的iOS應用程序
備注:還有一些工具因為不常用或者被棄用了(比如:shenzhen),這里就不一一列舉了。
二、操作步驟
-
安裝fastlane
- 確保安裝了最新版的Xcode command line tools
xcode-select --install
- 安裝fastlane
[sudo] gem install fastlane -NV
或者也可以使用brew cask 來安裝fastlane
- 確保安裝了最新版的Xcode command line tools
-
初始化fastlane
- 打開terminal(終端),進入項目根目錄下,初始化fastlane
fastlane init
出現如下選項,選擇4:
DB610C68-5EC2-4FBF-8E3D-FDF8261444A1.png
① 自動化截圖
② 將測試版分發自動化到TestFlight
③ 自動上傳、發布到App Store
④ 手動設置 - 手動設置您的項目以使您的任務自動化
然后,輸入開發者賬號密碼
76080789-2B98-4218-9F67-EEEF0DD4F93F.png
如果開發者賬號上沒有對應的bundle id的App,會提示是否創建一個新的App,這里我們選擇否(n),因為這樣快速創建的App設置的信息有限,只能設置App名稱等一些基本信息,我們可以通過produce工具創建一個可以設置更多信息的App
image.png
- 打開terminal(終端),進入項目根目錄下,初始化fastlane
使用produce,在iTunes Connect或者Apple Developer Center上創建新的iOS應用程序
進入項目根目錄,找到fastlane文件夾下的Fastfile文件, 編輯文件,內容如下:
platform :ios do
desc "create new app"
lane :produce_app do
produce(
username: "xxxx@gmail.com",# APPle ID
app_name: "小魚小魚吃蝦米",#App 名稱
app_identifier: "com.test.www.FastlaneTest",#App bundle id
app_version: "1.0",#App 版本
sku: "10023500",#App sku
language: "Simplified Chinese",#App 語言,默認English
)
end
end
備注:language這個選項不能直接寫Chinese,語言選項如下
["Brazilian Portuguese", "Danish", "Dutch", "English", "English_Australian", "English_CA", "English_UK", "Finnish", "French", "French_CA", "German", "Greek", "Indonesian", "Italian", "Japanese", "Korean", "Malay", "Norwegian", "Portuguese", "Russian", "Simplified Chinese", "Spanish", "Spanish_MX", "Swedish", "Thai", "Traditional Chinese", "Turkish", "Vietnamese"]
在terminal中執行fastlane produce_app命令,創建成功提示如下:
- 使用cert創建簽名證書(Certificates)
① 在Fastfile中添加以下內容,生成開發證書:
lane :create_certificates do
cert(
username: "xxxx@gmail.com",# APPle ID
development: true,# 創建一個開發證書
force: "false",#即使存在現有證書,也要創建證書,默認為false
output_path: "./certs/development",#存儲所有證書和私鑰的目錄的路徑
)
end
結果如下:
② 生成生產證書
lane :create_dcertificates do
cert(
username: "xxxx@gmail.com",# APPle ID
development: false,# 創建一個開發證書
force: "false",#即使存在現有證書,也要創建證書,默認為false
output_path: "./certs/distribution",#存儲所有證書和私鑰的目錄的路徑
)
end
開發和生產證書,修改development的boolean值及output_path路徑即可
- 使用sigh 生成描述文件(mobileprovision)
在Fastfile中
①生成開發mobileprovision
lane :get_dev_provisioningProfile do
get_provisioning_profile(
username: "xxxx@gmail.com",# APPle ID
development: true,# 創建一個開發mobileprovision
app_identifier: "com.test.www.FastlaneTest",#bundle identifier
output_path: "./certs/development",#存儲mobileprovision的目錄的路徑
filename: "fastlane_dev.mobileprovision",#用于生成的供應配置文件的文件名(必須包含.mobileprovision)
)
end
② 生成生產mobileprovision
lane :get_provisioningProfile do
get_provisioning_profile(
username: "xxxx@gmail.com",# APPle ID
development: false,# 創建一個開發證書
app_identifier: "com.test.www.FastlaneTest",#bundle identifier
output_path: "./certs/distribution",#存儲mobileprovision的目錄的路徑
filename: "fastlane_distr.mobileprovision",#用于生成的供應配置文件的文件名(必須包含.mobileprovision)
)
end
找到certs/development&&distribution目錄下的證書及.mobileprovision文件,并安裝到電腦上
- 使用gym來打包ipa
-
插件(Plugins)
可以在fastlane1.3.0以及更高版本的添加插件,通過添加插件,可以增加一些擴展功能,以便更好的使用
查看所有可用插件
fastlane search_plug
查找插件
fastlane search_plugins [query]
添加插件
fastlane add_plugin [name]
這里介紹兩個將會用到插件:
① astlane-plugin-versioning => 用來修改build版本號和version版本號。
Fastlane內嵌的actionincrement_build_number使用的是蘋果提供的agvtool,agvtool在更改Build的時候會改變所有target的版本號。這時如果你在一個工程里有多個產品的話,每次編譯,所有的Build都要加1。
有了fastlane-plugin-versioning
不僅可以指定target增加Build,而且可以按照「語義化版本」規范增加Version,當然也可以直接設定Version。
② fastlane-plugin-firim => 直接把AdHoc或者InHouse打包的ipa上傳到fir.im,供測試下載。
安裝以上兩個插件
-
插件(Plugins)
fastlane add_plugin versioning
fastlane add_plugin firim
使用gym打包ipa
- 打包之前,先使用xcode的archive一下,保證項目可以運行起來
- 打包企業版
lane :inhouse do
# 以下兩個action來自fastlane-plugin-versioning,
# 第一個遞增 Build,第二個設定Version。
# 如果你有多個target,就必須指定target的值,否則它會直接找找到的第一個plist修改
increment_build_number_in_plist(target: 'FastlaneTest')
increment_version_number_in_plist(
target: 'FastlaneTest',
version_number: '1.0'
)
# gym用來編譯ipa
gym(scheme: 'FastlaneTest',#打包scheme
export_method:"enterprise",#打包類型app-store, ad-hoc, enterprise, development
output_directory: "./build",#ipa打包存放路徑
output_name: 'inhouse.ipa'#ipa名稱
)
end
- 上傳到firim
firim(firim_api_token:'38536e6737457d269979734fdsfdsfa')
打包其他版本只需要把export_method方法改成對應的字段即可,這里就一一敘述了
- 通過deliver 上傳截圖、App的元數據、二進制(ipa)文件到iTunes Connect
①在Deliverfile中填寫要上傳的App元數據
# For more information, check out the docs
# https://docs.fastlane.tools/actions/deliver/
# bundle identifier
app_identifier "com.test.www.FastlaneTest"
# Apple ID用戶名
username "xxxx@gmail.com"
# 版權聲明
copyright "#{Time.now.year} xiaoyuchixiami"
# 支持的語言
supportedLanguages = {
"cmn-Hans" => "zh-Hans"
}
# 副標題
subtitle(
'zh-Hans' => "小魚小魚,蝦米蝦米"
)
# App應用名稱
name(
'zh-Hans' => "小魚小魚吃蝦米"
)
# 關鍵字
keywords(
'zh-Hans' => "小魚小魚吃蝦米,小魚,吃蝦米"
)
# 營銷地址
marketing_url({
'zh-Hans' => "https:www.xiaoyuchixiami.com"
})
# 隱私地址
privacy_url({
'zh-Hans' => "https:www.xiaoyuchixiami.com"
})
# 支持網址
support_url({
'zh-Hans' => "https:www.xiaoyuchixiami.com"
})
# 發行說明
release_notes({
'zh-Hans' => "這是第一個版本哦"
})
# 應用說明
description({
'zh-Hans' => "小魚小魚吃蝦米, 蝦米被小魚吃",
})
# App價格
price_tier 0
# 應用程序圖標的路徑
app_icon './fastlane/metadata/AppIcon.png'
# 屏幕截圖的文件夾的路徑
screenshots_path './fastlane/screenshots'
# ipa路徑
ipa './build/release.ipa'
# 自動發布 app: false,則需要手動發布
automatic_release false
# 提交審核信息:加密, idfa 等
submission_information({
export_compliance_encryption_updated: false,
export_compliance_uses_encryption: false,
content_rights_contains_third_party_content: false,
add_id_info_uses_idfa: false
})
# 應用審核小組的聯系信息 app 審核信息
app_review_information(
first_name: "楊",
last_name: "過",
phone_number: "13522945883",
email_address: "10023500@gmial.com",
demo_user: "測試賬號",
demo_password: "測試密碼",
notes: "account needed"
)
② 在Fastfile中編寫上傳元數據action
lane :upload_message do
deliver
end
③ 在terminal中執行fastlane upload_message,會生成一份app元數據確認的htm,輸入y上傳
上傳成功截圖:
通過以上截圖,可以看到,我們打包的ipa包和其他元數據都上傳到了iTunes Connect
④ 發布應用
在Deliverfile文件中添加以下內容即可
# 上傳完成后提交新版本進行審查
submit_for_review: true
# 跳過HTML報告文件驗證
force: true
注意事項:
-
截圖文件需要區分語言,所以一個文件夾對應一種語言,以下是簡體中文對應的截圖,另外,同一個分辨率的圖片排序順序是根據字母順序排列的。
image.png
2.Deliverfile文件元數據是區分語言的,所以app名稱等信息需要加上語言標識,如下圖:
image.png