iOS 幾種打包方式

1. 最常用的Xcode中的Product->Archive的方法;
2. 壓縮Playload方式打包:

1.自己在Xcode配置好項目的簽名;
2.用Generic iOS Device來build工程;
3.找到生成的.app包,然后新建一個名為Payload的文件夾隙赁,將.app包放到文件夾里面;
4.壓縮Payload文件夾奶甘,然后將壓縮包的后綴從.zip改成.ipa;
然后就可以將ipa包安裝到手機上測試了...


image.png

image.png
3. 利用腳本自動打包
  • 使用方法

1.將腳本復(fù)制到工程的根目錄;
2.用代碼編輯軟件(比如Xcode)打開腳本凿宾,然后根據(jù)情況修改腳本內(nèi)的一些參數(shù);
3.打開終端交汤,輸入 ./shell.sh 就可執(zhí)行打包腳本狂秦。


腳本文件

其中 exportTest.plist 可以用如下方式生成:

直接使用Xcode打包, 然后直接導(dǎo)出 ipa 包, 得到 ExportOptions.plist 文件:


ExportOptions.plist文件

建議不管是手動管理證書還是自動管理證書都先使用Xcode打包, 之后直接導(dǎo)出或者copy一份里面的ExportOptions.plist文件之后再改下名字改成exportTest.plist即可!

  • 一般出錯的話都是由于plist文件里面證書配置有問題肉拓,所以還是建議使用XCode自動生成的
  • exportTest.plist 內(nèi)容如下:
exportTest.plist文件內(nèi)容
  • shell.sh 內(nèi)容如下:
#使用方法

#當前工程絕對路徑
project_path=$(cd `dirname $0`; pwd)
#生成的IPA文件存放路徑
project_path_pre=~/Desktop/IPAFiles
#project_path_pre=../${project_path} //當前工程上一級目錄

#工程名 將xxx替換成自己的工程名
project_name=xxx

#scheme名 將xxx替換成自己的sheme名
scheme_name=xxx

#打包模式 Debug/Release
development_mode=Debug

#plist文件所在路徑
exportOptionsPlistPath=${project_path}/exportTest.plist

#編譯過程中產(chǎn)生的臨時文件夾葵硕,build文件夾路徑(等打包成功之后刪除掉)
tempBuild_path=${project_path}/build

#build文件夾路徑
build_path=${project_path_pre}/build

#導(dǎo)出.ipa文件所在路徑
exportIpaPath=${project_path_pre}/IPADir/${development_mode}


echo "Place enter the number you want to export ? [ 1:app-store 2:development] "

##
read number
while([[ $number != 1 ]] && [[ $number != 2 ]])
do
echo "Error! Should enter 1 or 2"
echo "Place enter the number you want to export ? [ 1:app-store 2:development] "
read number
done

if [ $number == 1 ];then
development_mode=Release
exportOptionsPlistPath=${project_path}/exportAppstore.plist
else
development_mode=Debug
exportOptionsPlistPath=${project_path}/exportTest.plist
fi


echo '///-----------'
echo '/// 正在清理工程'
echo '///-----------'
xcodebuild \
clean -configuration ${development_mode} -quiet  || exit


echo '///--------'
echo '/// 清理完成'
echo '///--------'
echo ''

echo '///-----------'
echo '/// 正在編譯工程:'${development_mode}
echo '///-----------'
xcodebuild \
archive -workspace ${project_path}/${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive  -quiet  || exit

echo '///--------'
echo '/// 編譯完成'
echo '///--------'
echo ''

echo '///----------'
echo '/// 開始ipa打包'
echo '///----------'
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit

if [ -e $exportIpaPath/$scheme_name.ipa ]; then
echo '///----------'
echo '/// ipa包已導(dǎo)出'
echo '///----------'
open $exportIpaPath
rm -r $tempBuild_path
else
echo '///-------------'
echo '/// ipa包導(dǎo)出失敗 '
echo '///-------------'
fi
echo '///------------'
echo '/// 打包ipa完成  '
echo '///-----------='
echo ''

echo '///-------------'
echo '/// 開始發(fā)布ipa包 '
echo '///-------------'

if [ $number == 1 ];then

#驗證并上傳到App Store
# 將-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 ${exportIpaPath}/${scheme_name}.ipa -u xxx -p xxx -t ios --output-format xml
"$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u  xxx -p xxx -t ios --output-format xml
else

#上傳到Fir
#echo "+++++上傳到Fir平臺+++++"
# 將XXX替換成自己的Fir平臺的token
#fir login -T XXX
#fir publish $exportIpaPath/$scheme_name.ipa


#上傳到蒲公英
#將xxx替換成自己蒲公英上的User Key
uKey="xxx"
#將XXX替換成自己蒲公英上的API Key
apiKey="xxx"
#執(zhí)行上傳至蒲公英的命令
echo "+++++上傳到蒲公英平臺+++++"
curl -F "file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload


fi

exit 0

參考:
iOS Shell自動化打包發(fā)布
iOS 分享一個ipa打包腳本
打包時遇到的異常以及解決方法
github上最新的腳本文件

用Jenkins搭建打包參考:搭建iOS自動化打包平臺(利用Jenkins持續(xù)集成iOS項目)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吴藻,一起剝皮案震驚了整個濱河市瞒爬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沟堡,老刑警劉巖侧但,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異航罗,居然都是意外死亡禀横,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門粥血,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柏锄,“玉大人酿箭,你說我怎么就攤上這事≈和蓿” “怎么了缭嫡?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抬闷。 經(jīng)常有香客問我妇蛀,道長,這世上最難降的妖魔是什么饶氏? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任讥耗,我火速辦了婚禮,結(jié)果婚禮上疹启,老公的妹妹穿的比我還像新娘。我一直安慰自己蔼卡,他們只是感情好喊崖,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雇逞,像睡著了一般荤懂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上塘砸,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天节仿,我揣著相機與錄音,去河邊找鬼掉蔬。 笑死廊宪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的女轿。 我是一名探鬼主播箭启,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛉迹!你這毒婦竟也來了傅寡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤北救,失蹤者是張志新(化名)和其女友劉穎荐操,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珍策,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡托启,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了膛壹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驾中。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡唉堪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肩民,到底是詐尸還是另有隱情唠亚,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布持痰,位于F島的核電站灶搜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏工窍。R本人自食惡果不足惜割卖,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望患雏。 院中可真熱鬧鹏溯,春花似錦、人聲如沸淹仑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匀借。三九已至颜阐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吓肋,已是汗流浹背凳怨。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留是鬼,地道東北人肤舞。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像屑咳,于是被迫代替她去往敵國和親萨赁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容