自動(dòng)化打包流程和手動(dòng)打包一模一樣绽昏,只是用腳本解放雙手而已。后面會(huì)有demo和腳本文件团滥。
示例
準(zhǔn)備工作
1.準(zhǔn)備一個(gè)打包的配置文件(配置文件:包含了證書等信息)
2.上傳蒲公英的key
3蘋果開發(fā)中帳號(hào)和密碼颓影,如開啟了雙重驗(yàn)證需要app specific 密碼
2.在Demo中復(fù)制如下兩個(gè)plist和腳本,并做修改
腳本中把XXX修改為自己項(xiàng)目信息即可
#使用方法
if[ ! -d ./IPADir ];
? ? then
? ? ? ? mkdir -p IPADir;
fi
#工程絕對(duì)路徑
project_path=$(cd`dirname $0`; pwd)
#工程名 將XXX替換成自己的工程名
project_name=XXX
#scheme名 將XXX替換成自己的sheme名
scheme_name=XXX
#打包模式 Debug/Release
development_mode=Release
#build文件夾路徑
build_path=${project_path}/build
#plist文件所在路徑
exportOptionsPlistPath=${project_path}/exportAppstore.plist
#導(dǎo)出.ipa文件所在路徑
exportIpaPath=${project_path}/IPADir/${development_mode}
echo "請(qǐng)輸入你想法發(fā)布的方式 ? [ 1:app-store 2:ad-hoc] "
##
readnumber
? ? while([[ $number !=1]] && [[ $number !=2]])
? ? do
? ? ? ? echo"笨蛋盾鳞,只能輸入 1 or 2"
? ? ? ? echo"請(qǐng)輸入你想法發(fā)布的方式 ? [ 1:app-store 2:ad-hoc] "
? ? ? ? readnumber
? ? 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
# 刪除build包
if[[ -d build ]];then
rm -rf build -r
fi
if[ -e $exportIpaPath/$scheme_name.ipa ];
? ? then
? ? echo'///----------'
? ? echo'/// ipa包已導(dǎo)出'
? ? echo'///----------'
? ? open $exportIpaPath
? ? else
? ? echo'///-------------'
? ? echo'/// ipa包導(dǎo)出失敗 '
? ? echo'///-------------'
fi
echo '///------------'
echo '/// 打包ipa完成? '
echo '///-----------='
echo''
echo '///-------------'
echo '/// 開始發(fā)布ipa包 '
echo '///-------------'
if[ $number ==1];
? ? then
? ? #驗(yàn)證并上傳到App Store
? ? # 將-u 后面的XXX替換成自己的AppleID的賬號(hào)犬性,-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]
? ? "$altoolPath"--upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u? XXX -p XXX
else
? ? echo"請(qǐng)輸入你要發(fā)布的平臺(tái) ? [ 1:fir 2:蒲公英] "
? ? ##
? ? readplatform
? ? ? ? while([[ $platform !=1]] && [[ $platform !=2]])
? ? ? ? do
? ? ? ? ? ? echo"笨蛋,只能輸入 1 or 2"
? ? ? ? ? ? echo"請(qǐng)輸入你要發(fā)布的平臺(tái) ? [ 1:fir 2:蒲公英] "
? ? ? ? ? ? readplatform
? ? ? ? done
? ? ? ? ? ? if[ $platform ==1];
? ? ? ? ? ? ? ? then
? ? ? ? ? ? ? ? #上傳到Fir
? ? ? ? ? ? ? ? # 將XXX替換成自己的Fir平臺(tái)的token
? ? ? ? ? ? ? ? fir login -T d58c5754d2aff40b4d883ddfefa0d079
? ? ? ? ? ? ? ? fir publish $exportIpaPath/$scheme_name.ipa
? ? ? ? ? ? else
? ? ? ? ? ? ? ? echo"開始上傳到蒲公英"
? ? ? ? ? ? ? ? #上傳到蒲公英
? ? ? ? ? ? ? ? #蒲公英aipKey
? ? ? ? ? ? ? ? MY_PGY_API_K=XXX
? ? ? ? ? ? ? ? #蒲公英uKey
? ? ? ? ? ? ? ? MY_PGY_UK=XXX
? ? ? ? ? ? ? ? curl -F"file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${MY_PGY_UK}" -F "_api_key=${MY_PGY_API_K}" https://qiniu-storage.pgyer.com/apiv1/app/upload
? ? ? ? ? ? fi
fi
echo "\n\n"
echo "已運(yùn)行完畢>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
exit 0
3.使用(此腳本適用于cocopods工程腾仅,沒有用到的話pod init一下即可(必須))
在項(xiàng)目路徑下執(zhí)行./shell.sh 即可
上傳蒲公英和Fir 需要準(zhǔn)備如下
上傳蒲公英需要準(zhǔn)備:key
?上傳Fir需要安裝插件
打開fir.im官網(wǎng) 查看fir命令行說明即可
操作過程過中出現(xiàn)錯(cuò)誤及解決方法
1. ? ?xcodebuild:error Unknow build action xx.xcworkspace
? ? ? 我這里的錯(cuò)誤是有個(gè)文件夾Swift Test 中間出現(xiàn)了空格乒裆,刪除空格即可
2. 發(fā)布到app store時(shí),輸入密碼后報(bào)app specific password 錯(cuò)誤(這是因?yàn)閹ぬ?hào)開啟了雙重驗(yàn)證推励,比如:短信驗(yàn)證)
解決如下 去蘋果官網(wǎng)https://appleid.apple.com?找到賬戶設(shè)置鹤耍,安全 生成密碼,復(fù)制验辞,發(fā)布時(shí)填寫這個(gè)密碼即可
發(fā)布至app store 如下
到此即發(fā)布成功了,有空了分享下fastLane自動(dòng)化打包