iOS xcodebuild 自動打包入門

目前在了解自動打包這塊,不管是 fastlanexctool 還是啥潘鲫,基本原理都是調(diào)用 xcodebuild 方法去實現(xiàn)萍启,所以這一篇先入門 xcodebuild总珠。

關(guān)于 xcodebuild ,先了解幾個命令:

  • 查看手冊: man xcodebuild
  • 查看版本號: xcodebuild -version
  • 查看幫助: xcodebuild -help
  • 查看已安裝SDK列表: xcodebuild -showsdks
  • 查看xcodebuild目錄: xcode-select -print-path
  • 查看項目配置: xcodebuild -showBuildSettings
  • 編譯項目: xcodebuild

在終端輸入xcodebuild -help 可以查看一些常用方法勘纯。

xcodebuild [-project <projectname>] [[-target <targetname>]...|-alltargets] [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings [-json]] [<buildsetting>=<value>]... [<buildaction>]...
xcodebuild [-project <projectname>] -scheme <schemeName> [-destination <destinationspecifier>]... [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings [-json]] [-showdestinations] [<buildsetting>=<value>]... [<buildaction>]...
xcodebuild -workspace <workspacename> -scheme <schemeName> [-destination <destinationspecifier>]... [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings] [-showdestinations] [<buildsetting>=<value>]... [<buildaction>]...
xcodebuild -version [-sdk [<sdkfullpath>|<sdkname>] [-json] [<infoitem>] ]
xcodebuild -list [[-project <projectname>]|[-workspace <workspacename>]] [-json]
xcodebuild -showsdks [-json]
xcodebuild -exportArchive -archivePath <xcarchivepath> [-exportPath <destinationpath>] -exportOptionsPlist <plistpath>
xcodebuild -exportNotarizedApp -archivePath <xcarchivepath> -exportPath <destinationpath>
xcodebuild -exportLocalizations -localizationPath <path> -project <projectname> [-exportLanguage <targetlanguage>...]
xcodebuild -importLocalizations -localizationPath <path> -project <projectname>
xcodebuild -resolvePackageDependencies [-project <projectname>|-workspace <workspacename>] -clonedSourcePackagesDirPath <path>
       ···

這里就不做一一介紹局服,但是有幾個項目級別的參數(shù)要注意:

  • workspace 是一個項目的總文件,里面可以包含一個或者幾個project, 一般大家會把項目依賴的 project驳遵,放在一個 workspace中淫奔,比如 Cocoapods 這個工具就把依賴放在了一個單獨的叫Podsproject,讓后通過 workspace 把項目組織在一起堤结。
  • project 一個組織項目里代碼和資源的文件搏讶。project 是必不可少,workspace是可選的霍殴。如果你只有一個project媒惕,并且不依賴其他project則是不需要workspace的。
  • target 定義編譯時需要哪些文件和資源来庭,對環(huán)境有哪些要求妒蔚,編譯中要不要加入什么自定義的步驟。一個 project 可以有多個文件target, 比如在iOS和 macOS 共用代碼的項目里,可以分別有 iOS 和 macOS 兩個不同的target 每個 target 包含整個項目里自己需要的文件和設(shè)置肴盏。
  • scheme 定義了你怎樣使用 target 的方式科盛,相當(dāng)于在 target 外觀有包了一層,屬于定義 target 的外部環(huán)境菜皂。在什么環(huán)境下使用 target贞绵,是 Build,run恍飘,Test榨崩,Profile 等等。build 這個 target 要不要 Debug 的符號信息章母,跑起來編譯好的二進制文件時母蛛,要不要帶參數(shù),帶什么參數(shù)乳怎,二進制文件跑起來后應(yīng)該生活在什么樣的環(huán)境彩郊?系統(tǒng)語言是什么,Metal 要不要開啟蚪缀?二進制跑起來后要不要對程序的內(nèi)存進行監(jiān)控秫逝,比如Zombie Objects等等。因為scheme 是為target服務(wù)的询枚,所以 Xcode 是創(chuàng)建target 是默認(rèn)創(chuàng)建對應(yīng)的scheme筷登。

一般情況我們明確指定,workspace哩盲、 scheme這兩個基本參數(shù)就可以前方,沒有 workspace 的則指定projec來源

對于xcodebuild的介紹先到這里廉油,想看更仔細的惠险,請移步官網(wǎng) 或者在終端執(zhí)行 man xcodebuild 或者 xcodebuild -help

下面抒线,我們?nèi)ビH自實操一個打包項目班巩。

新建一個工程XcodeBuildDemo

image

然后在創(chuàng)建一個腳本文件xd.sh


#使用方法
if [ ! -d ./IPADir ];
then
mkdir -p IPADir;
fi

#工程絕對路徑
project_path=$(cd `dirname $0`; pwd)

#工程名
project_name="XcodeBuildDemo"

#scheme名
scheme_name="XcodeBuildDemo"

#打包模式 Debug/Release
development_mode=Debug

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

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

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


echo '正在清理工程'

xcodebuild \
clean -configuration ${development_mode} -quiet  || exit

echo '清理完成'

echo '正在編譯工程:'${development_mode}

xcodebuild \
archive -project ${project_path}/${project_name}.xcodeproj \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive  -quiet  || exit

echo '編譯完成'

echo '開始ipa打包'

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 'ipa包已導(dǎo)出'
open $exportIpaPath
else
echo 'ipa包導(dǎo)出失敗 '
fi
echo '打包ipa完成  '

將shell腳本和寫好的版本配置文件放在 XcodeBuildDemo.xcodeproj 同一個目錄文件下

image

在終端cd到當(dāng)前目錄嘶炭,執(zhí)行 xd.sh 腳本抱慌。可以得到最后的結(jié)果

image

至此眨猎,關(guān)于xcodebuild自動打包入門就到這里抑进。
Demo

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市睡陪,隨后出現(xiàn)的幾起案子寺渗,更是在濱河造成了極大的恐慌匿情,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件信殊,死亡現(xiàn)場離奇詭異炬称,居然都是意外死亡,警方通過查閱死者的電腦和手機涡拘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門玲躯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳄乏,你說我怎么就攤上這事跷车。” “怎么了汞窗?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵姓赤,是天一觀的道長赡译。 經(jīng)常有香客問我仲吏,道長,這世上最難降的妖魔是什么蝌焚? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任裹唆,我火速辦了婚禮,結(jié)果婚禮上只洒,老公的妹妹穿的比我還像新娘许帐。我一直安慰自己,他們只是感情好毕谴,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布成畦。 她就那樣靜靜地躺著,像睡著了一般涝开。 火紅的嫁衣襯著肌膚如雪循帐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天舀武,我揣著相機與錄音拄养,去河邊找鬼。 笑死银舱,一個胖子當(dāng)著我的面吹牛瘪匿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寻馏,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼棋弥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诚欠?” 一聲冷哼從身側(cè)響起嘁锯,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤宪祥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后家乘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝗羊,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年仁锯,在試婚紗的時候發(fā)現(xiàn)自己被綠了耀找。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡业崖,死狀恐怖野芒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情双炕,我是刑警寧澤狞悲,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站妇斤,受9級特大地震影響摇锋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜站超,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一荸恕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧死相,春花似錦融求、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肮柜,卻和暖如春陷舅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背素挽。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工蔑赘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人预明。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓缩赛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撰糠。 傳聞我的和親對象是個殘疾皇子酥馍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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