xcodebuild是一個命令行工具尊剔,可以用來對Xcode工程或工作區(qū)進(jìn)行編譯爪幻、查找、分析、測試等各種操作挨稿。
workspace 是最大的集合仇轻,其可以包含多個 projet,同時可以管理不同的 project 之間的關(guān)系奶甘。workspace 是以 xcworkspace 的文件形式存在的篷店。workspace 的存在是為了解決原來僅有 project 的時候不同的 project 之間的引用和調(diào)用困難的問題
project是Xcode對一些代碼文件、資源臭家、配置信息的一個管理倉庫疲陕,可以用來編譯產(chǎn)出一個或多個產(chǎn)品。Project包含了多個targets钉赁,project有一個被所有targets公用的build setting蹄殃。
targets 表示如何產(chǎn)出一個具體產(chǎn)品,決定了如何對文件進(jìn)行編譯(編譯那幾個文件橄霉,使用什么編譯腳本)(通過自己的build setting 和從project繼承的build setting)
configuration 可以對project和targets中
scheme(方案)它不同于上面四個窃爷,表示一個組合方案表示那些targets使用什么 build configuration與 executable configuration 邑蒋。An Xcode scheme defines a collection of targets to build, a configuration to use when building, and a collection of tests to execute.可以針對編譯姓蜂,運(yùn)行,單元測試医吊,動態(tài)分析钱慢,靜態(tài)代碼分析以及打包進(jìn)行一些配置
命令參數(shù)
xcodebuild [-project projectname] [-target targetname...] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction...] [setting=value...] [-userdefault=value...]?
?xcodebuild [-project projectname] -scheme schemename [-destination destinationspecifier] [-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction...] [setting=value...] [-userdefault=value...]?
?xcodebuild -workspace workspacename -scheme schemename [-destination destinationspecifier] [-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction...] [setting=value...] [-userdefault=value...]?
?xcodebuild -version [-sdk [sdkfullpath | sdkname]] [infoitem]?
?xcodebuild -showsdks?
?xcodebuild -list [-project projectname | -workspace workspacename]
?xcodebuild -exportArchive -exportFormat format -archivePath xcarchivepath -exportPath destinationpath [-exportProvisioningProfile profilename] [-exportSigningIdentity identityname] [-exportInstallerIdentity identityname]
命令介紹
xcodebuild 構(gòu)建Xcode project中的一個或多個targets, 也可以構(gòu)建Xcode workspace或Xcode project的一個scheme。?
要構(gòu)建一個Xcode project, 在你的工程目錄下運(yùn)行xcodebuild. 如果這個目錄下有多個project文件則可以使用-project參數(shù)用來區(qū)分你要編譯哪個project. 默認(rèn)情況下,xcodebuild 構(gòu)建project中列出的第一個target, 并且使用默認(rèn)的build configuration. targets在project中的順序是project的一個屬性對所有的使用者來說這個順序是相同的卿堂。?
要構(gòu)建一個Xcode workspace, 必須要使用參數(shù)-workspace 和 -scheme 指定構(gòu)建束莫。 scheme 控制了需要編譯那些targets以及這個targets如何被編譯。不過也可以通過 xcodebuild的其他參數(shù)來從新指定scheme的一些屬性.
使用:
需要了解的是草描,archive 工程后览绿,實際上我們是把整個工程編譯,然后簽名穗慕,變成了一個后綴名為 xcarchive 的文件饿敲。通過調(diào)用以下命令,我們將整個工程編譯逛绵,簽名怀各,然后將生成的 xcarchive 文件放到工程根路徑下的 build 文件夾里。
xcodebuild?-scheme XXX ?-archivePath?build/YYY.xcarchive?archive
參數(shù)說明:XXX 就是工程的 scheme 的名字术浪,在 Xcode 中可以看到,YYY你可以自己隨意起個名字
如果工程使用了 Cocoapods 來管理第三方庫瓢对,那么命令的執(zhí)行方式上有所不同,因為 Cocoapods 會把工程變成一個 workspace胰苏。將 workspace 工程 archive 的命令如下硕蛹。
1xcodebuild?-workspace??-scheme??-archivePath?build/.xcarchive?archive
這個命令和上面的命令區(qū)別就在于需要指定 workspace 的文件名。
上面這兩個命令適用于不同類型的工程: workspace 或者非 workspace。執(zhí)行中讀取的配置都是在工程的 Target 或者 Scheme 中設(shè)置好的配置法焰。
(scheme基本就是你的工程名僵腺,大家可以看一下參考文章,我就不單截圖了)
先到這里吧壶栋,目前就試了一個功能辰如,后續(xù)有新功能再加進(jìn)來
動手搭建 iOS CI 環(huán)境之「了解 xcodebuild 命令」 - CocoaChina_讓移動開發(fā)更簡單