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項目)