shell技巧5 全自動打包ipa

2021-09-20 01:18:49 字數 4558 閱讀 5073

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...