Xcodebuild命令

1段誊、 Xcodebuild簡介

Xcodebuild是命令行工具包的其中一項(xiàng)。

命令行工具包(Command Line Tools)是一個(gè)輕量的、可以與XCode分開的黍析、在Mac上單獨(dú)下載的命令行工具包。

它有兩部分組成:Mac OS SDK和用戶系統(tǒng)庫目錄/usr/bin下的諸多命令工具键思。例如:gcc/g++編譯器础爬,make、git吼鳞、nase看蚜、xcodebuild、xcrun等等赔桌。

2供炎、命令行工具包(Command Line Tools)的安裝

Xcode-select命令

xcode-select是Mac系統(tǒng)自帶的命令行工具,屬于用戶系統(tǒng)內(nèi)/usr/bin疾党。當(dāng)電腦上安裝多個(gè)Xcode時(shí)音诫,xcode-select用來選擇命令行工具為哪一個(gè)版本的Xcode服務(wù)。

命令行工具安裝指令:xcode-select --install

選擇指定的Xcode路徑:xcode-select --switch <path>

3仿贬、常見命令

man命令

man可以進(jìn)行命令用法的在線文檔查詢,包括使用例子纽竣。比如:man xcodebuild。

xcpretty命令

命令行輸出美化小工具茧泪,可以對(duì)錯(cuò)誤蜓氨,警告給予高亮顯示。使用方式:xcodebuild | xcpretty

xcrun命令

xcrun用于調(diào)用其他命令執(zhí)行队伟,如:xcrun xcodebuild穴吹。

xcrun的調(diào)用是基于xcode-select選擇的工具鏈,當(dāng)電腦中存在多個(gè)版本的xcode時(shí)嗜侮,使用xcrun調(diào)用可以保證命令的環(huán)境一致性港令。

xcodebuild命令

下面重點(diǎn)介紹xcodebuild如何使用。

在使用xcodebuild時(shí)锈颗,從終端進(jìn)入到projectname .xcodeproj 目錄下顷霹。

有workspace時(shí),參數(shù)中要帶-workspace和-scheme击吱。

只有project時(shí)淋淀,則參數(shù)中要帶 -project和-scheme選項(xiàng)。

xcodebuild在Xcode中存在的默認(rèn)配置在路徑project/info頁面中

4覆醇、xcodebuild的常見使用場景

簡單命令行build

(1)xcodebuild

單寫一個(gè)xcodebuild朵纷,工程編譯使用默認(rèn)的scheme和編譯配置。

scheme永脓、targets袍辞、配置、目標(biāo)設(shè)備常摧、SDK和導(dǎo)出數(shù)據(jù)位置可以在后面自定義配置

(2)archive打包操作

xcodebuild archive? -workspace PROJECT_NAME.xcworkspace? -scheme SCHEME_NAME -configuration release -archivePath?

EXPORT_ARCHIVE_PATH -archivePath:設(shè)置項(xiàng)目的歸檔路徑

(3)導(dǎo)出ipa文件

xcodebuild -exportArchive -archivePath EXPORT_ARCHIVE_PATH? ? -exportPath EXPORT_IPA_PATH -exportOptionsPlist ExportOptionsPlistPath-allowProvisioningUpdates-exportArchive:導(dǎo)出ipa-exportPath:導(dǎo)出ipa文件的路徑-exportOptionsPlist:文件導(dǎo)出時(shí)的配置信息-allowProvisioningUpdates:允許xcodebuild與蘋果網(wǎng)站通訊搅吁,進(jìn)行自動(dòng)簽名,證書自動(dòng)更新,生成似芝。

(4)單元測試

xcodebuild test -project PROJECT_NAME.xcodeproj -scheme SCHEME_NAME -destination'platform=iOS Simulator,name=iPhone 6s,OS=11.2'-configuration Debug -derivedDataPath output-derivedDataPath:產(chǎn)生的緩存文件放在./output目錄下

configuration:編譯環(huán)境那婉,選擇Debug/Release

-destination :選擇test時(shí)的目標(biāo)設(shè)備和系統(tǒng)版本號(hào)

(5)?UI測試/單元測試,針對(duì)某個(gè)方法進(jìn)行測試

xcodebuild test -workspace?PROJECT_NAME.xcodeproj -scheme SCHEME_NAME -destination'platform=iOS Simulator,name=iPhone 6s,OS=11.2'-only-testing:TARGET_NAME/CLASS_NAME/FUNC_NAME -quiet-only-testing: 只測試某一個(gè)方法党瓮,target名/類名/方法名-quiet : 除了錯(cuò)誤和警告不打印任何信息

(6)使用上次編譯成功的測試用例進(jìn)行測試

注意:app創(chuàng)建時(shí)需要指定app的bundle名

self.app = [[XCUIApplication alloc] initWithBundleIdentifier:@"com.xxx.id"];

[self.app launch];

1.UI測試/單元測試详炬,不進(jìn)行代碼編譯,利用上次編譯的緩存(包括工程編譯+測試用例編譯)寞奸,進(jìn)行重新跑測試呛谜。

xcodebuild test-without-building -workspace PROJECT_NAME.xcworkspace -scheme doctor -destination'platform=iOS Simulator,name=iPhone 6s,OS=12.0'-only-testing:TARGET_NAME/CLASS_NAME/FUNC_NAME

2.UI測試,使用選項(xiàng)-xctestrun生產(chǎn)測試文件,進(jìn)行測試調(diào)試

//1.產(chǎn)生xctestrun文件xcodebuild build-for-testing -project PROJECT_NAME.xcodeproj -scheme SCHEME_NAME -destination'platform=iOS Simulator,name=iPhone 6s,OS=11.2'-configuration Debug -derivedDataPath output-derivedDataPath: derivedDataPath/Build/Products目錄下生成一個(gè).xctestrun文件,包含測試信息

//2.使用xctestrun文件(不帶-workspace/-project/-scheme參數(shù))xcodebuild test-without-building -destination'platform=iOS Simulator,name=iPhone 6s,OS=12.0'-xctestrun DerivedDataPath.xctestrun -only-testing:TARGET_NAME/CLASS_NAME/FUNC_NAME-xctestrun:有這個(gè)選項(xiàng)就從指定的路徑下尋找bundle枪萄,沒有這個(gè)選項(xiàng)在derivedDataPath下尋找bundle-only-testing:TARGET_NAME/CLASS_NAME/FUNC_NAME

?5隐岛、xcodebuild常見action

6、另外一些常見的命令

genstrings 命令

本地化命令瓷翻,根據(jù)指定的C/Object-C源文件生成.strings文件聚凹。

genstrings -a /path/to/source/files/*.m

ibtool 命令

本地化命令,作用于xib文件齐帚。

ibtool --generate-strings-file Localizable.strings en.lpoj/Interface.xib

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妒牙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子对妄,更是在濱河造成了極大的恐慌湘今,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剪菱,死亡現(xiàn)場離奇詭異摩瞎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)孝常,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門旗们,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人构灸,你說我怎么就攤上這事蚪拦。” “怎么了冻押?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盛嘿。 經(jīng)常有香客問我洛巢,道長,這世上最難降的妖魔是什么次兆? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任稿茉,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漓库。我一直安慰自己恃慧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布渺蒿。 她就那樣靜靜地躺著痢士,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茂装。 梳的紋絲不亂的頭發(fā)上怠蹂,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音少态,去河邊找鬼城侧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛彼妻,可吹牛的內(nèi)容都是我干的嫌佑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼侨歉,長吁一口氣:“原來是場噩夢啊……” “哼屋摇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起为肮,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤摊册,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后颊艳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茅特,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年棋枕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了白修。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡重斑,死狀恐怖兵睛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窥浪,我是刑警寧澤祖很,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站漾脂,受9級(jí)特大地震影響假颇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜骨稿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一笨鸡、第九天 我趴在偏房一處隱蔽的房頂上張望姜钳。 院中可真熱鬧,春花似錦形耗、人聲如沸哥桥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拟糕。三九已至,卻和暖如春昔期,著一層夾襖步出監(jiān)牢的瞬間已卸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國打工硼一, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留累澡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓般贼,卻偏偏與公主長得像愧哟,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哼蛆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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