iOS 最省時的打包姿勢

前言

現在網上有很多自動化打包的腳本,上網搜索一下就有這么些個,眼花繚亂,大多是使用xcodebuild命令,或者在Jenkins上面部署,方便實用。


auto1.png

打包方式

1 自動化腳本打包

無論是jekins部署還是使用xcodebuild指令的shell腳本都是不錯的選擇。可以自行google ,網上很多類似的案例。

2 Apple推薦的方式

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

3 手動build打包 (推薦指數五星)

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

*******************畫重點***********************

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

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

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

代碼在此:

# ************************ 相關參數配置(蒲公英和fir 二選一) **************************

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

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

# 上傳到fir時,運行腳本之前要先登錄一下:fir login API Token。 出現成功字段即可
# fir的參數:
#apiToken="62284d44d88e34c013e481184b409fb8"
apiToken="自己的apiToken"
#
projectDir="這是一個上傳測試fir的腳本描述"
# **************************************************

programBag="$desktop/Desktop/ProgramBag"
payloadPath="$desktop/Desktop/Payload"
#計時
SECONDS=0

uploadMethod() {
if [ $isFir == "fir" ]; then
#  或者上傳IPA到fir上面 -- 明天寫 --
echo "正在上傳到fir.im...."
fir publish "$programBag/Payload.ipa" -T "$apiToken" -c ${projectDir}
echo "\n????打包上傳更新成功!"
#輸出總用時
echo "===總計用時為: ${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 "===總計用時為: ${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
******************************************
結語

個人認為自動化打包腳本,打包的速度有點慢,因為自動化的腳本一般都是封裝的xcodebuild指令,實際上和手動打包的原理差不多,用到了achive方法。(swift的項目可能會比oc的項目要編譯的慢一點,再加上一些代碼書寫問題可能就會更慢(多提一嘴,這里給swift項目開發的小伙伴安利一個檢測項目編譯時間的工具,很實用,地址在此:BuildTimeAnalyzer-for-Xcode))
而且部署起來也稍稍有些麻煩,不錯還好,一錯就各種找不著頭腦(可能我在網上找的腳本都比較low,或者我比較low)。
選擇第二種方式,手動build 之后,生成.app 文件,然后運行自己寫的腳本,是目前我覺得最省時最快捷的方式。。由于是shell初學,可能代碼寫的一般,旨在解決問題,哈哈(輕噴輕噴)。
對前端開發來說,shell語言的學習可以在一些方面提高我們的開發效率,畢竟人生苦短嘛!!!

如果覺得能幫到您的,麻煩點個小星星,哈哈!!大家加油!!!

參考文章:

ios自動話打包探索
shell教程,菜鳥教程

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370