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