ps:fastlane
當然能做到這些事情,但是這個工具太重,需要的配置也需要熟悉,對於剛畢業或陌生的同學有點難,學習一下ruby
也是好事~
自己配置的就不說了,自己搜尋一下教程就好,讓xcode生成,就是要archive
專案,然後選擇export...
:
上面三個檔案,就對應下面的三個選項:
如果選擇手動,就是使用本地的證書(如果是選擇自動,就是xcode中登陸了開發者賬號,自動生成和匹配證書):
等待xcode生成ipa包,選擇export
,xcode就會自動生成ipa檔案和證書配置檔案,跟我們的指令碼一樣的:
打包時,遇到下面報錯:
2018-09-17 10:35:23.068 xcodebuild[11322:5883826] [mt] idedistribution: step failed: : error domain=nscocoaerrordomain code=3840 "no value." userinfo=
error: exportarchive: the data couldn』t be read because it isn』t in the correct format.
error domain=nscocoaerrordomain code=3840 "no value." userinfo=
** export failed **
解決方法:
將對應打包的證書plist檔案的compilebitcode
內容由true
改為false
就可以:
compilebitcode
#獲取指令碼執行目錄
scrip_path="$( cd "$( dirname "$" )" && pwd )"
#工程絕對路徑
project_path=$(dirname "$scrip_path")
#工程名 將***替換成自己的工程名
project_name=buildipaexample
#scheme名 將***替換成自己的sheme名
scheme_name=buildipaexample
#project_type 專案如果是用cocoapod,就改為 xcworkspace,否則用 xcodeproj
project_type=xcodeproj
#打包模式 debug/release
development_mode=debug
#build資料夾路徑
build_path=$/build
#plist檔案所在路徑
exportoptionsplistpath=$/build_ipa_shell/exportoptions-dev.plist
read number
while([[ $number != 1 ]] && [[ $number != 2 ]] && [[ $number != 3 ]])
doecho "error! should enter 1 or 2 or 3"
read number
done
if [ $number == 1 ];then
development_mode=release
elif [ $number == 2 ];then
development_mode=release
exportoptionsplistpath=$/build_ipa_shell/exportoptions-adhoc.plist
else
development_mode=debug
exportoptionsplistpath=$/build_ipa_shell/exportoptions-dev.plist
fi#匯出.ipa檔案所在路徑
exportipapath=$/ipa_files/$
# 生成儲存ipa檔案的目錄
if [ ! -d $/ipa_files ];
then
mkdir -p $/ipa_files;
fi# 打包型別
if [ $project_type == "xcodeproj" ];
then
project_build=project
else
project_build=workspace
fi# 進入專案目錄,方便後面的操作
cd $
echo '///-----------'
echo '/// 正在清理工程'
echo '///-----------'
xcodebuild \
clean -configuration $ -quiet || exit
echo '///--------'
echo '/// 清理完成'
echo '///--------'
echo ''
echo '///-----------'
echo '/// 正在編譯工程:'$
echo '///-----------'
xcodebuild \
archive -$ $/$.$ \
-scheme $ \
-configuration $ \
-archivepath $/$.xcarchive -quiet || exit
echo '///--------'
echo '/// 編譯完成'
echo '///--------'
echo ''
echo '///----------'
echo '/// 開始ipa打包'
echo '///----------'
xcodebuild -exportarchive -archivepath $/$.xcarchive \
-configuration $ \
-exportpath $ \
-exportoptionsplist $ \
-quiet || exit
if [ -e $exportipapath/$scheme_name.ipa ]; then
echo '///----------'
echo '/// ipa包已匯出'
echo '///----------'
open $exportipapath
else
echo '///-------------'
echo '/// ipa包匯出失敗 '
echo '///-------------'
fiecho '///------------'
echo '/// 打包ipa完成 '
echo '///-----------='
echo ''
# 開啟生成ipa的目錄
open $
# echo '///-------------'
# echo '/// 開始發布ipa包 '
# echo '///-------------'
# if [ $number == 1 ];then
# else
# #上傳到fir
# # 將***替換成自己的fir平台的token
# fir login -t ***
# fir publish $exportipapath/$scheme_name.ipa
# fi
exit 0
ihtcboy/ishell: shell指令碼程式設計技巧,總結一些常用的提高效率的方法。
ihtcboy/buildipaexample: build ipa file example
如有不正確的地方,歡迎指導!
了解 xcodebuild 命令 ,自動打包ipa
引用部落格 在 ios 開發中,如果需要把工程打包成 ipa 檔案,通常的做法就是在 xcode 裡點選 product archive 等待整個工程 archive 後,然後在自動彈出的 organizer 中進行選擇,根據需要匯出 ad hoc,enterprise 型別的 ipa 包。雖然 x...
xcode自動打包與shell指令碼
xcode自動打包與shell指令碼 在xcode5以後,一般在選擇自動打包時,經常會提示選擇證書情況,如果想要繞過選擇證書,可以通過xcodebuild命令實現 在持續整合中 本篇只說明一下如果使用命令列以及shell來打ipa包 執行的命令 xcodebuild執行的命令 v build rel...
利用Shell指令碼將 app自動轉換為 ipa
如果關閉了archive管理介面,想再次進入,只需開啟任意xcode專案,window organizer即可進入。桌面將會出現乙個ipafolder的資料夾,轉換好的ipa包就在裡面,可分發給測試人員 cd users p85755 desktop autoipa 先刪除裡面當前的ipafolde...