xcodeBuild 用例

怎么通過 Command line來創建我的工程?

xcodebuilds 是一個Command line工具,允許開發者通過它建立,分析,測試,和在工程或者工作區來 存檔操作(archive operations)。他能管理在工程里一個或者多個目標(targets),或者管理工程或工作區的方案(scheme)。在以下頁面里,介紹了xcodebuild提供了多個這只來管理這些操作。xcodebuild在本地應用上默認的保存了輸出命令。

以下是各種xcodebuild的用法。在運行任何以下命令前,要保證導航中包含了你的項目或者工作區文件。(根目錄下使用)

  • 打印所有的目標(targets),生成配置(configurations),和工程中使用的方案(schemes),在終端運行以下命令
xcodebuild -list -project <your_project_name>.xcodeproj
xcodebuild -list -workspace <your_project_name>.YKTicketsApp.xcworkspace
  • 項目運行一個方案(scheme)
xcodebuild -scheme <your_scheme_name> build

注意:xcodebuild提供了多個生成事件,如建立(build),分析(analyze)和存檔(archive),這個事件都可以執行在你的目標(target)或者方案里(scheme)。但是,生成(build)會被執行在默認配置下,當沒有特定的事件執行。

  • 使用配置文件來生成目標
xcodebuild -target <your_target_name> -xcconfig <your_configuration_file>.xcconfig
your_target_name 目標名稱
your_configuration_file 配置文件名稱
  • 使用xcodebuild命令來改變輸出路徑,使用SYMROOT(生成產品路徑)和DSTROOT (安裝生成產品本地)生成設置來分別為測試包和.dSYM文件和生產包定義路徑。
//例1:Setting up a location for MyiOSApp's debug version
$ xcodebuild -scheme MyiOSApp SYMROOT="/Users/username/DebugLocation"
Build settings from command line:
SYMROOT = "/Users/username/DebugLocation"
.
//例2:Setting up a location for MyiOSApp's archive
$ xcodebuild -scheme MyiOSApp DSTROOT="/Users/username/ReleaseLocation" archive
Build settings from command line:
DSTROOT = /Users/username/ReleaseLocation

應用存在多個配置。怎么為xcodebuild設置一個默認的生成配置。

在xcode,項目中的配置都在配置菜單里,可以在菜單上這選一個默認配置以供xcodebuild來構建目標。使用這個菜單選一個默認配置如下圖


設置默認配置

xcodebuild

BSD一般命令手冊

名稱(NAME)

xcodebuild -- 生成Xcode的項目和工作區

簡介(SYNOPSIS)

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 destination path 
[-exportProvisioningProfile profilename] [-exportSigningIdentity identityname] 
[-exportInstallerIdentity identityname]

選項(Options)

  • -project projectname 明確規定根據工程名建立工程,需要的,如果有多個項目文件
    同一目錄。
  • -target targetname 明確規定根據目標名建立目標
  • -alltargets 建立所有的目標在明確規定的項目里
  • -workspace workspacename 明確規定根據工作區名建立工作區
  • -scheme schemename 明確規定根據方案名建立方案,需要的,如果建立一個工作區
  • -destination destinationspecifier 使用指定機型,默認一個指定來兼容選定的方案
  • -destination-timeout timeout 當搜索一個目的設備,明確規定超時時間,默認是30秒
  • -configuration configurationname 當建立每個目標,明確規定使用的配置
  • -arch architecture 當建立每個目標,明確規定使用的架構
  • -sdk [<sdkfullpath> | <sdkname>] 建立一個項目或者工作區對指定的SDK,以建立適合SDK工具。參數可以是一個SDK的絕對路徑,或規范名稱的SDK。
  • -showsdks 顯示所有可以在Xcode使用的SDKs,包括規范的名稱適用于- SDK。不觸發運行。
  • -list 打印工程或者在工作區里的方案的目標(targets),不觸發運行。
  • -derivedDataPath path 當在工作區里操作運行時間,重寫的文件夾,為導出數據使用。
  • -resultBundlePath path 在工作區里執行建立事件,寫一個Bundle為結果指定路徑
  • -exportArchive 指定存檔(archive)輸出。需要-exportFormat, -archivePath, 和-exportPath. 不能只通過一個Build操作
  • -exportFormat format 指定輸出格式,有效的格式是IPA (iOS archives only),PKG (Mac archives only), 和應用。如果沒有指定,xcodebuild將嘗試自動檢測格式為IPA或PKG。
  • -archivePath xcarchivepath 指定路徑為存檔產品(archive)為存檔操作,或者指定輸入(當-exportArchive沒有使用)
  • -exportPath destinationpath 為輸出蟾皮你指定輸出路徑,路徑要包含名稱
  • -exportProvisioningProfile profilename 當輸出存檔,指定要使用的provisioning profile
  • -exportSigningIdentity identityname 當輸出存檔,指定要使用簽名ID,如果可以,加上-exportProvisioningProfile.
  • -exportInstallerIdentity identity name 當輸出存檔,指定要使用安裝程序簽名ID,如果可以,加上-exportSigningIdentity or -exportProvisioningProfile
  • -exportWithOriginalSigningIdentity 當輸出一個存檔,指定使用簽名ID來創建存檔
  • buildaction ... 在目標上指定創建事件來執行,允許的事件為
    • build,在(SYMROOT)路徑下建立目標,這是默認事件
    • analyze,在(SYMROOT)路徑下分析目標或者方案,這需要指定一個方案。
    • archive,在(SYMROOT)路徑下存檔方案,這需要指定方案
    • test,在(SYMROOT)路徑下測試方案 ,這個需要指定一個方案和任意一個目標設備
    • installers,拷貝工程源到源路徑(SYMROOT)
    • install,建立目標和安裝他到目標字典到目標源上(DSTROOT).
    • clean,清除在建立源(SYMROOT)的項目和相關文件。
  • -xcconfig filename 當運行所有目標,加載這個參數的運行設置。這些設置將覆蓋所有其他設置,包括在命令行上單獨設置。
  • -dry-run, -n 打印將被執行的命令,但是不執行他們
  • -skipUnavailableActions 跳過不能執行的操作,并且不會失敗。這個設置僅授權沒有設置-scheme
  • setting=value 設置建立的設置 setting to value.
  • -userdefault=value 設置用戶默認 default to value.
  • -version 顯示xcode版本信息。不會觸發建立。當和-sdk使用在配置里,將會顯示SDK的版本或者所有的SKDs,當有-sdk參數。另外,一個簡單的版本信息應該返回指定的infoitem
  • -usage 顯示xcodebuild的慣例(usage)信息

例子(EXAMPLES)

  • xcodebuild clean install
    清除建立字典。

  • xcodebuild -target MyTarget OBJROOT=/Build/MyProj/Obj.root SYMROOT=/Build/MyProj/Sym.root

  • xcodebuild -sdk macosx10.6

  • xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme

  • xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme archive

  • xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination 'platform=OS X,arch=x86_64' test

  • xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination 'platform=iOS Simulator,name=iPhone' -destination 'platform=iOS,name=My iPad' test

  • xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination generic/platform=iOS build

  • xcodebuild -exportArchive -exportFormat IPA -archivePath MyMobileApp.xcarchive -exportPath MyMobileApp.ipa -exportProvisioningProfile 'MyMobileApp Distribution Profile'

  • xcodebuild -exportArchive -exportFormat APP -archivePath MyMacApp.xcarchive -exportPath MyMacApp.pkg -exportSigningIdentity 'Developer ID Application: My Team'


That's all,thanks!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容