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