iOS 最省時(shí)的打包姿勢

前言

現(xiàn)在網(wǎng)上有很多自動(dòng)化打包的腳本央拖,上網(wǎng)搜索一下就有這么些個(gè)祭阀,眼花繚亂,大多是使用xcodebuild命令鲜戒,或者在Jenkins上面部署专控,方便實(shí)用。


auto1.png

打包方式

1 自動(dòng)化腳本打包

無論是jekins部署還是使用xcodebuild指令的shell腳本都是不錯(cuò)的選擇遏餐÷赘可以自行g(shù)oogle ,網(wǎng)上很多類似的案例失都。

2 Apple推薦的方式

使用xcode的archive功能:Product -> Archieve -> Export

3 手動(dòng)build打包 (推薦指數(shù)五星)

(1) 手動(dòng)編譯柏蘑,生成 .app 文件
(2) 把 .app 文件放在名字為 Payload 文件夾下
(3) 壓縮文件夾,生成 .zip 文件
(4) 修改文件名:.zip -> ipa粹庞,打包完成
(5) 登陸各個(gè)平臺(蒲公英咳焚,fir等),把本地的ipa包上傳

*******************畫重點(diǎn)***********************

這里有小弟自己寫的一個(gè)上傳腳本庞溜,地址在此:上傳ipa腳本地址
只需要編譯一下工程革半,生成.app文件,再配置一下腳本中的參數(shù)即可,一鍵上傳ipa包又官,具體步驟如下:

  • 1 如果是上傳fir平臺延刘,把isFir變量更改為fir;上傳蒲公英平臺則改成pyger
  • 2 desktop參數(shù)改成自己本地的路徑(本來是想使用絕對路徑的六敬,但是后面會(huì)報(bào)錯(cuò)碘赖,新手一枚不知道怎么解決,所以觉阅。崖疤。),如 ="/Users/用戶名"
  • 3 appFileFullPath 路徑改成你自己項(xiàng)目build + b 之后 .app 文件的路徑即可(設(shè)備選擇 generic ios device)
  • 4 如果是蒲公英平臺的話: 需要獲取ukey和apikey兩個(gè)參數(shù) 典勇,具體可以參照蒲公英獲取ukey和apikey頁面劫哼,updateDescription參數(shù)是本更新內(nèi)容;如果是上傳到fir平臺割笙,則需要apiToken參數(shù)权烧,可以去fir平臺自行獲取,projectDir是此次更新內(nèi)容
  • 5 注意一下伤溉,如果是是上傳fir平臺的話般码,首先要登陸一下 打開終端 輸入fir login API Token (API Token 就是平臺上獲取的token)如果出現(xiàn)了success等字樣說明登陸成功 ,然后還需要安裝fir-cli工具乱顾,也很簡單 終端輸入sudo gem install -n /usr/local/bin fir-cli --no-ri --no-rdoc 等待完成即可

遵從以上步驟之后板祝,打開終端,輸入 sh + 腳本文件路徑 (可以直接把文件拖動(dòng)到終端中即可)等待完成即可

代碼在此:

# ************************ 相關(guān)參數(shù)配置(蒲公英和fir 二選一) **************************

# 設(shè)置是使用fir上傳(改成fir)還是蒲公英上傳pgyer(改成pgyer) --
isFir="fir"
# 換算成自己主文件路徑 --(使用絕對路徑報(bào)錯(cuò)走净,不知道為何)--
desktop="/Users/自己的用戶名"
# .app 文件的路徑
appFileFullPath="自己的.app文件路徑券时,如下"
#appFileFullPath="$desktop/Library/Developer/Xcode/DerivedData/FirTextExmple-aqjhktrtgzvszeevtcsdjrypkvfs/Build/Products/Debug-iphoneos/FirTextExmple.app"

# 蒲公英的參數(shù): 自行填寫自己賬號對應(yīng)的key值  上傳文檔地址:https://www.pgyer.com/doc/api#uploadApp
uKey="自己的uKey,獲取方式上面鏈接"
apiKey="自己的apiKey伏伯,獲取方式上面鏈接"
# 蒲公英需要填寫的版本描述
updateDescription="這是一個(gè)測試路徑的版本"

# 上傳到fir時(shí)橘洞,運(yùn)行腳本之前要先登錄一下:fir login API Token。 出現(xiàn)成功字段即可
# fir的參數(shù):
#apiToken="62284d44d88e34c013e481184b409fb8"
apiToken="自己的apiToken"
#
projectDir="這是一個(gè)上傳測試fir的腳本描述"
# **************************************************

programBag="$desktop/Desktop/ProgramBag"
payloadPath="$desktop/Desktop/Payload"
#計(jì)時(shí)
SECONDS=0

uploadMethod() {
if [ $isFir == "fir" ]; then
#  或者上傳IPA到fir上面 -- 明天寫 --
echo "正在上傳到fir.im...."
fir publish "$programBag/Payload.ipa" -T "$apiToken" -c ${projectDir}
echo "\n????打包上傳更新成功说搅!"
#輸出總用時(shí)
echo "===總計(jì)用時(shí)為: ${SECONDS}s==="
rm -rf ${programBag}
else

echo "正在上傳到蒲公英...."
#  上傳IPA到蒲公英  file=@$programBag/Payload.ipa
curl -F "file=@$programBag/Payload.ipa" \
-F "uKey=$uKey" \
-F "_api_key=$apiKey" \
-F "updateDescription=$updateDescription" \
https://www.pgyer.com/apiv1/app/upload

if [ $? -eq 0 ]
then
echo "\n????上傳蒲公英成功"
echo "===總計(jì)用時(shí)為: ${SECONDS}s==="
rm -rf ${programBag}
else
echo "上傳蒲公英失敗"
fi
fi
}

mkdir -p ${payloadPath}
cp -r ${appFileFullPath} ${payloadPath}
mkdir -p ${programBag}
cp -r ${payloadPath} ${programBag} && rm -rf ${payloadPath}
cd ${programBag}
zip -q -r ./Payload.zip ./* && rm -rf Payload
if [ $? -eq 0 ]
then
mv Payload.zip Payload.ipa
echo "壓縮成功"
uploadMethod
else
echo "壓縮失敗"
fi
image.png
GifMakerProject2.gif
******************************************
結(jié)語

個(gè)人認(rèn)為自動(dòng)化打包腳本炸枣,打包的速度有點(diǎn)慢,因?yàn)樽詣?dòng)化的腳本一般都是封裝的xcodebuild指令弄唧,實(shí)際上和手動(dòng)打包的原理差不多适肠,用到了achive方法。(swift的項(xiàng)目可能會(huì)比oc的項(xiàng)目要編譯的慢一點(diǎn)候引,再加上一些代碼書寫問題可能就會(huì)更慢(多提一嘴迂猴,這里給swift項(xiàng)目開發(fā)的小伙伴安利一個(gè)檢測項(xiàng)目編譯時(shí)間的工具,很實(shí)用背伴,地址在此:BuildTimeAnalyzer-for-Xcode))
而且部署起來也稍稍有些麻煩,不錯(cuò)還好,一錯(cuò)就各種找不著頭腦(可能我在網(wǎng)上找的腳本都比較low傻寂,或者我比較low)息尺。
選擇第二種方式,手動(dòng)build 之后疾掰,生成.app 文件搂誉,然后運(yùn)行自己寫的腳本,是目前我覺得最省時(shí)最快捷的方式静檬。炭懊。由于是shell初學(xué),可能代碼寫的一般拂檩,旨在解決問題侮腹,哈哈(輕噴輕噴)。
對前端開發(fā)來說稻励,shell語言的學(xué)習(xí)可以在一些方面提高我們的開發(fā)效率父阻,畢竟人生苦短嘛!M椤加矛!

如果覺得能幫到您的,麻煩點(diǎn)個(gè)小星星煤篙,哈哈U謇馈!大家加油<巍?撩!

參考文章:

ios自動(dòng)話打包探索
shell教程身害,菜鳥教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末味悄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子塌鸯,更是在濱河造成了極大的恐慌侍瑟,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丙猬,死亡現(xiàn)場離奇詭異涨颜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)茧球,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門庭瑰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抢埋,你說我怎么就攤上這事弹灭《皆荩” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵穷吮,是天一觀的道長逻翁。 經(jīng)常有香客問我,道長捡鱼,這世上最難降的妖魔是什么八回? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮驾诈,結(jié)果婚禮上缠诅,老公的妹妹穿的比我還像新娘。我一直安慰自己乍迄,他們只是感情好管引,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著就乓,像睡著了一般汉匙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上生蚁,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天噩翠,我揣著相機(jī)與錄音,去河邊找鬼邦投。 笑死伤锚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的志衣。 我是一名探鬼主播屯援,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼念脯!你這毒婦竟也來了诺凡?” 一聲冷哼從身側(cè)響起锅论,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤您觉,失蹤者是張志新(化名)和其女友劉穎铸史,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體假勿,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡借嗽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了转培。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恶导。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浸须,靈堂內(nèi)的尸體忽然破棺而出惨寿,到底是詐尸還是另有隱情邦泄,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布缤沦,位于F島的核電站虎韵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缸废。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一驶社、第九天 我趴在偏房一處隱蔽的房頂上張望企量。 院中可真熱鬧,春花似錦亡电、人聲如沸届巩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恕汇。三九已至,卻和暖如春或辖,著一層夾襖步出監(jiān)牢的瞬間瘾英,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工颂暇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缺谴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓耳鸯,卻偏偏與公主長得像湿蛔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子县爬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354