最近在嘗試自動化打包,畢竟每次xcode
打包還是挺麻煩的
網(wǎng)上有很多教程,選擇適合自己的需求的就好
facebook 的xctool
fastlane 的gym
集成Jenkins的(我的需求沒那么高,只是要自動化打包和上傳fir而已)
自然也就有著不同的準備工作的咯
安裝工具
因為系統(tǒng)更新到eicapitain,所以很多同學(xué)用HomeBrew
或者gym
安裝工具的時候都可能會出現(xiàn)Permition denied 的提示
兩種方法:
1 去掉系統(tǒng)的rootless的設(shè)置
2 我的做法,安裝的時候指定目錄
brew install xctool
(xctool)
gem install -n /usr/local/bin gym
(fastlane)
gem install -n /usr/local/bin fir-cli
(fir 上傳)
安裝好這些工具,就可以開始嘗試先用xcode
打一次包,確認的證書和provison文件是對的
fastlane 的打包腳本
#!/bin/bash
#計時
SECONDS=0
#假設(shè)腳本放置在與項目相同的路徑下
project_path=$(pwd)
#取當(dāng)前時間字符串添加到文件結(jié)尾
now=$(date +"%Y_%m_%d_%H_%M_%S")
#指定項目的scheme名稱
scheme="tete"
#指定要打包的配置名
configuration="development"
#指定打包所使用的輸出方式灶挟,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method參數(shù)
export_method='development'
#指定項目地址
workspace_path="$project_path/tete.xcworkspace"
#指定輸出路徑
output_path="/Users/chengxun/Desktop/"
#指定輸出歸檔文件地址
archive_path="$output_path/tete_${now}.xcarchive"
#指定輸出ipa地址
ipa_path="$output_path/tete_${now}.ipa"
#指定輸出ipa名稱
ipa_name="tete_${now}.ipa"
#獲取執(zhí)行命令時的commit message
commit_msg="$1"
#輸出設(shè)定的變量值
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===export method: ${export_method}==="
echo "===commit msg: $1==="
#先清空前一次build
gym --workspace ${workspace_path} --scheme ${scheme} --clean --configuration ${configuration} --archive_path ${archive_path} --export_method ${export_method} --output_directory ${output_path} --output_name ${ipa_name}
#上傳到fir
fir publish ${ipa_path} -T fir_token -c "${commit_msg}"
#輸出總用時
echo "===Finished. Total time: ${SECONDS}s==="
xctool的打包腳本
#!/bin/bash
#計時
SECONDS=0
#假設(shè)腳本放置在與項目相同的路徑下
project_path=$(pwd)
#取當(dāng)前時間字符串添加到文件結(jié)尾
now=$(date +"%Y_%m_%d_%H_%M_%S")
#指定項目的scheme名稱
scheme="tete"
#指定要打包的配置名
configuration="Adhoc"
#指定打包所使用的provisioning profile名稱
provisioning_profile='qiaoshouteteIdentifier'
#指定項目地址
workspace_path="$project_path/tete.xcworkspace"
#指定輸出路徑
output_path="/Users/chengxun/Desktop/"
#指定輸出歸檔文件地址
archive_path="$output_path/tete${now}.xcarchive"
#指定輸出ipa地址
ipa_path="$output_path/tete_${now}.ipa"
#獲取執(zhí)行命令時的commit message
commit_msg="$1"
#輸出設(shè)定的變量值
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===profile: ${provisioning_profile}==="
echo "===commit msg: $1==="
#先清空前一次build
xctool clean -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration}
#根據(jù)指定的項目邦蜜、scheme赁遗、configuration與輸出路徑打包出archive文件
xctool build -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration} archive -archivePath ${archive_path}
#使用指定的provisioning profile導(dǎo)出ipa
#我暫時沒找到xctool指定provisioning profile的方法胜嗓,所以這里用了xcodebuild
xcodebuild -exportArchive -archivePath ${archive_path} -exportPath ${ipa_path} -exportFormat ipa -exportProvisioningProfile "${provisioning_profile}"
#上傳到fir
#fir publish ${ipa_path} -T fir_token -c "${commit_msg}"
#輸出總用時
echo "===Finished. Total time: ${SECONDS}s==="
對比下兩者
fastlane gym: 1 速度快 2 有dysm文件 3 不用指定provison文件
xctool: 相比下就要弱一些咯 看圖就知道咯