本文的目的是通過簡單的幾句命令行艰垂,實現(xiàn)自動編譯柔纵,打包并上傳到蒲公英分發(fā)給測試人員使用,或者上傳到App Store簡化上線發(fā)布的流程柬姚。
在執(zhí)行腳本之前需要做的三件事
(如果之前安裝過rvm郁轻、ruby可直接跳過1,2步笑旺,直接進行3,4步即可)
1.安裝rvm
rvm是一個便捷的多版本ruby環(huán)境的管理和切換工具 官網(wǎng):https://rvm.io/
(1).打開終端
輸入:curl -sSL https://get.rvm.io | bash -s stable
(2).載入rvm環(huán)境
輸入:source ~/.rvm/scripts/rvm
(3).修改rvm下載ruby的源昼浦,到ruby china的鏡像
輸入:echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
(4).檢查一下是否安裝正確
輸入:rvm -v
//如果打印出了rvm的版本號,則表示安裝正確
2.安裝ruby
(1).列出ruby可安裝的版本信息
輸入:rvm list known
(2).安裝一個ruby版本
輸入:rvm install 2.4.0
(3).如果想設置為默認版本筒主,可以用這條命令來完成
輸入:rvm use 2.4.0 --default
(4).檢查ruby版本是否正確
輸入:ruby -v
3.安裝fir-cli插件
輸入: gem install fir-cli
4.開始做關于腳本的事情了
(1).下載腳本scripts
腳本地址為:https://github.com/wangxj4268/TestDemo.git
(2).將腳本拖入工程目錄下
腳本路徑:/Users/xxx/Desktop/項目名稱/scripts
(3).配置腳本
1.如果是打development包关噪,則需要配置:xcodebuild_dev_config.sh文件中的以下4項:
- target_name="工程名.xcodeproj" # 有效值 ****.xcodeproj / ****.xcworkspace (cocoapods項目)
- project_name="工程名" # 工程名
- work_type="依據(jù)實際情況來填寫" # 有效值 project / workspace (cocoapods項目)
- api_token="依據(jù)實際情況來填寫" # fir token
同時還需要配置xcodebuild_dev_config.plist中4個的參數(shù):
- teamId:根據(jù)實際的開發(fā)者賬號來填寫
- method:development(枚舉值有4個:app-store、ad-hoc物舒、enterprise色洞、development)
- provisioningProfiles中需要配置項目的build id(當初我只配置了profile證書名稱而沒有填寫build id,不知道鼓搗了好久冠胯,才在第二天早上才如夢初醒的)
- provisioningProfiles中還需要配置profile文件名稱
2.如果是打distribution包火诸,參數(shù)配置和development中的差不多,只是需要注意plist文件中的profile文件名稱需要替換成distribution下的
#如果需要上傳到蒲公英上荠察,則需要打開.sh文件中的:
fir p ${out_path}/$project_name.ipa -T $api_token -c 發(fā)布release版本
#如果是需要上傳到App Store中去置蜀,則需要打開.sh文件中的:
# 將-u 后面的XXX替換成自己的AppleID的賬號,-p后面的XXX替換成自己的密碼
altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
"$altoolPath" --validate-app -f ${out_path}/$project_name.ipa -u xxxxxx@qq.com -p xxxxxx -t ios --output-format xml
"$altoolPath" --upload-app -f ${out_path}/$project_name.ipa -u xxxxxx@qq.com -p xxxxxx -t ios --output-format xml
(4).開始執(zhí)行腳本
1.首先定位到腳本所在的位置
輸入:cd /Users/xxx/Desktop/項目名稱/scripts
2.開始執(zhí)行腳本
#如果是development下的包
輸入:bash -l ./xcodebuild_dev_config.sh
#如果是distribution下的包
輸入:bash -l ./xcodebuild_dis_config.sh
3.靜靜的等待終端刷進度悉盆,然后就能成功
5.題外話:希望踩過的坑別人不要再踩了
當初我自己對照著別人的代碼實現(xiàn)這個功能時盯荤,遇上了很多的問題
1.報錯error: archive not found at path '/Users/xxx/Desktop/項目名稱/xcode_build_ipa_dev/2018-05-30-16-16-11/XKSDeliver.xcarchive
后來發(fā)現(xiàn)是.sh文件中的代碼有問題,應該是工程名.xcarchive文件而不應該是XKSDeliver.xcarchive焕盟,因為archive出來的文件是$project_name.xcarchive秋秤,而exportArchive時查找的是XKSDeliver.xcarchive,所以就會發(fā)生找不到文件路徑的問題
2.報錯error: exportArchive: "xxx.app" requires a provisioning profile
后來發(fā)現(xiàn)是plist文件中只配置了三個參數(shù):teamId脚翘、method灼卢、profile文件名稱而忘記了配置build id,等我第二天才發(fā)現(xiàn)這個問題所在(ps:這個純屬我自己眼睛有問題了来农,原樓主的:your build id一直在plist里面鞋真,但是我就是沒有填...不說了,都是淚)
3.報錯Gem::ConflictError...Unable to activate fir-cli-1.6.8, because CFPropertyList-3.0.0 conflicts with...
應該是fir-cli與ruby的版本有沖突了沃于,所以后來我重新安裝了rvm涩咖、ruby海诲、fir-cli才解決,我最終的版本是:
rvm 版本1.29.3
ruby版本ruby 2.4.0p0,之前mac上的是2.3.0檩互,我重新安裝了ruby特幔,并設置了2.4為默認版
fir-cli版本 1.6.8
=============2018-12-06日更新=============
4.項目名稱不能帶有空格,如:weixin 2這種(因為復制一個工程時盾似,文件夾名稱重復了敬辣,系統(tǒng)會自動在后面跟上一個序號,這時打包就不成功)
參考:
MAC_Ruby 安裝(http://www.reibang.com/p/c073e6fc01f5)
fir自動打包腳本--iOS(http://www.reibang.com/p/af8b929c6624)