前言
在開發(fā)中經(jīng)常需要打測(cè)試包叠赦,然后上傳至蒲公英等三方平臺(tái)纲缓,這其中需要經(jīng)歷的操作為:
- 設(shè)置項(xiàng)目的打包環(huán)境
- 利用 xcode 進(jìn)行打包
- 上傳至蒲公英等三方平臺(tái)
每一次打包上面的過程必不可少,而且都是手工的仰禽,本篇文章我們采用CD(Continuous Delivery)持續(xù)交付和CI(Continuous Integration)持續(xù)集成來進(jìn)行自動(dòng)化打包一鍵操作氮墨,解放雙手,拒絕手動(dòng)的重復(fù)低效率勞動(dòng)吐葵。
本篇文章講解如何使用 fastlane 自動(dòng)打包
1. 安裝環(huán)境
1.1 安裝 Homebrew
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
安裝成功规揪,查看版本
1.2 安裝 fastlane
brew install fastlane
安裝成功,查看版本
2. fastlane 配置
2.1 進(jìn)入到工程目錄 .xcworkspace 下面
打開終端 cd 到工程目錄下折联,如下圖
2.2 初始化 fastlane
fastlane init
終端里面讓您選擇粒褒,我這邊是選擇了 4;
中間會(huì)有很多 Continue by pressing Enter ? 诚镰,需要你敲幾次回車鍵
然后就會(huì)看到生成 fastlane 文件奕坟,如下圖所示
2.3 加入蒲公英插件
fastlane add_plugin pgyer 或者 bundle exec fastlane add_plugin pgyer
具體查看蒲公英官方文檔 使用 Fastlane 上傳 App 到蒲公英
中間有一個(gè)需要 按 y 回車確認(rèn),這是第二次按照截圖了清笨,可能有些不一樣
安裝后 Gemfile 信息增加如下
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)
2.4 編輯 Fastfile 腳本文件
打開剛剛生成的 fastlane/Fastfile 文件月杉,默認(rèn)生成文本如下
2.4.1最終 的 Fastfile 腳本文件內(nèi)容
蒲公英賬號(hào)需要自己配置,如果1.3 未執(zhí)行抠艾,或者沒有賬號(hào)苛萎,請(qǐng)注釋或刪除掉, 2.4.2 有如何獲取蒲公英賬號(hào)key的截圖检号,
default_platform(:ios)
platform :ios do
desc "Description of what the lane does"
# 打包時(shí)候用的名稱 例如 fastlane app
lane :app do
# add actions here: https://docs.fastlane.tools/actions
gym(
# 每次打包之前clean一下
clean: true,
# 打包出 ipa 文件的路徑腌歉,我放到了桌面文件夾,你自行更改文件夾
output_directory: '/Users/hengqianjin/Desktop/APP',
# 打包的名稱齐苛,可任意取
output_name: 'myApp.ipa',
# 項(xiàng)目的 scheme翘盖,自己項(xiàng)目名 .xcworkspace 前面的項(xiàng)目名就是
scheme: "Farm",
# 默認(rèn) Release,Release or Debug
configuration: 'Debug',
# 是否包含 bitcode
include_bitcode: false,
# 是否包含 symbols
include_symbols: true,
# 打包導(dǎo)出方式凹蜂,包含 app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application
export_method: 'development',
# 這個(gè)設(shè)置是為了設(shè)置 xcode 自動(dòng)配置證書和配置文件馍驯,當(dāng)然也可以手動(dòng)配置,可以參考文檔
export_xcargs: '-allowProvisioningUpdates'
)
# mac上的通知彈窗玛痊,通知打包完畢
notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "打包成功汰瘫,已導(dǎo)出安裝包", message: "準(zhǔn)備發(fā)布到蒲公英中……")
#配置上傳蒲公英賬號(hào) 蒲公英的 api_key和 user_key 用自己蒲公英賬號(hào)的,別用我的@奚贰;烀帧!如果沒有可刪除
pgyer(api_key:'fbf25d2a525e12d5084b0ae09098ab7b', user_key: '12bba6204bd7c3e26375f653f8086358', update_description: "測(cè)試fastlane自動(dòng)打包")
end
end
2.4.2蒲公英的 key 獲取
去自己的蒲公英賬號(hào)好復(fù)制即可
3. fastlane 自動(dòng)打包上傳
3.1 運(yùn)行腳本颈娜,進(jìn)行自動(dòng)化打包
fastlane XXX 或者 bundle exec fastlane xxx
這個(gè) XXX剑逃,就是 Fastfile 文件里面浙宜,lane:后面的文字,我的名稱是 app蛹磺,就是 fastlane app
3.2 打包成功粟瞬,生成.ipa文件、上傳至蒲公英發(fā)布萤捆、 mac 上發(fā)送通知
成功提示
mac 上成功通知
蒲公英上上傳成功
你output_directory 設(shè)置的文件夾中的 myApp.ipa
4.問題or總結(jié)
4.1 fastlane 上面打包步驟支持 OC 和Swift
我分別使用了OC創(chuàng)建的項(xiàng)目和Swift創(chuàng)建的項(xiàng)目裙品,均能打包發(fā)布成功
4.2 使用之前請(qǐng)確保證書齊全
請(qǐng)使用之前保證 Xcode 能正常打包沒問題俗或,否則會(huì)導(dǎo)致打包失敗市怎,親測(cè)Swift項(xiàng)目無證書打包失敗
4.3 fastlane init 問題
由于 https://rubygems.org 部署在國(guó)外,有時(shí)候可能因?yàn)榫W(wǎng)絡(luò)原因?qū)е率辛慰。区匠。赡埽@里是可能失敗帅腌,網(wǎng)絡(luò)好可以無視)
失敗時(shí)候終端提示 bundle update驰弄,同時(shí)Gemfile不會(huì)生成Gemfile.lock文件,而且會(huì)導(dǎo)致后續(xù)打包失敗
4.3 問題解決辦法
打開Gemfile速客, 進(jìn)行替換源 https://rubygems.org/ 替換為 https://gems.ruby-china.com/
#source "https://rubygems.org"
https://gems.ruby-china.com/
替換后執(zhí)行 bundle update
4.4 自動(dòng)打包耗時(shí)問題
此處只是自動(dòng)打包戚篙,但是依舊需要時(shí)間的,項(xiàng)目越大越耗時(shí)溺职,只是節(jié)省了手動(dòng)操作步驟
參考文章
最簡(jiǎn)單安裝 brew 的方法
iOS 自動(dòng)化打包(fastlane)岔擂,真香定律
iOS 基于 fastlane 和 jenkins 的自動(dòng)化打包
iOS 自動(dòng)化打包發(fā)布(Fastlane + 蒲公英)