原文地址:点击打开链接
参考:点击打开链接
参考:点击打开链接
xcodebuild 是一款用来打包 Xcode projects 或者 workspaces 的命令行工具。用 xcodebuild 把工程打成 app 格式后再用 xcrun 来签名和打成 ipa 格式的包。关于 xcrun 请参看我的另一篇博文 xcrun 命令详解。
xcodebuild 可以编译 Xcode 工程中包含的一个或多个 targets,或者编译 Xcode workspace 或 Xcode project 中包含的 scheme。
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 编译工程时必须运行在包含工程文件(projectname.xcodeproj)的文件夹中。如果这个文件夹中有多个工程文件,那么你需要使用 -project
参数指明编译哪个工程。xcodebuild 会使用默认的编译配置,默认编译列表中的第一个 target。工程中的 target 顺序是工程的一个属性,对于所有的用来说都一样。
xcodebuild 编译 workspace 时,必须传入 -workspace
和 -scheme
选项来定义这个编译。scheme 中的参数将控制哪些 target 被编译以及如何编译,然而你可也以传入一些其他参数到 xcodebuild 命令中来覆盖 scheme 中的参数。
也有几个参数显示 Xcode 的版本信息或者目录中的 projects 或 workspaces 的信息,但是这些参数不会启动一个编译。这些命令是:-version
,-showsdks
,和 -usage
。
-project projectname
指定工程名,当同一目录下有多个工程时必须指定。
-target tagrgetname
指定编译的target的名称。
-alltargets
编译工程中的所有target。
-worksace workspacename
指定 workspace 的名称。
-scheme schemename
指定 scheme 的名称,编译 workspace 时是必须的。
-destination destinationspecifier
使用 destinationspecifier
指定的设备作为目标设备。默认与 scheme 中选择的兼容。
-destination-timeout timeout
设置搜索目标设备的超时时间,默认是30秒。
-configuration configurationname
当编译每个 target 时使用 configurationname
指定的配置。
-arch architecture
当编译每个 target 时使用 architecture
指定的架构类型。
-sdk [<sdkfullpath> | <sdkname>]
指定编译时所用的 SDK。参数可以是 SDK 的绝对路径,也可以是 SDK 的名称。
-showsdks
列出所有 Xcode 可识别的可用的 SDK,这个参数不会启动编译。
-list
列出工程中的所有 target 和 配置,或者 workspace 的 schemes。不会启动编译。
-derivedDataPath path
覆盖编译 workspace 的 scheme 时的结果数据存放的路径。
-resultBundlePath path
编译 workspace 的 scheme 时把一个 bunndle 写到指定的路径。
-exportArchive
指定一个可以被导出的 archive 文件。需要 -exportFormat
,-archivePath和
-exportPath` 配合使用,不能在编译时单独使用。
-exportFormat format
指定需要被导出的 archive 文件的格式。可行的格式是 IPA(iOS 包文件),PKG(Mac 包文件)和 APP。如果未指定,则 xcodebuild 则会自动检测使用IPA 或 PKG 格式。
-archivePath xcarchivepath
指定 archive 路径。
-exportPath destinationpath
指定导出的目标文件路径。
-exportProvisioningProfile profilename
指定导出 archive 文件时所使用的 provisioning pofile。
-exportSigningIdentity identityname
指定导出 archive 文件时所使用的应用签名 id。在可能的情况下,这个可以被 -exportProvisioningProfile
自动推导出来。
-exportInstallerIdentity identityname
指定导出 archive 文件时所使用的安装签名 id。如果可能,这个可以被 -exportSigningIdentity
或 -exportProvisioningProfile
自动推导出来。
-exportWithOriginalSigningIdentity
指定创建可被导出的 archive 文件时所使用的签名文件。
buildaction ...
指定一个或多个编译 target 时的编译行为。可行的编译行为有: - build
编译根环境下(SYMROOT)的 target。默认行为。
analyze
编译并且分析根环境(SYMROOT)下的一个 target 或者 scheme。需要指定一个 scheme。
archive
Archive 根环境(SYMROOT)下的一个 scheme。需要指定一个 scheme。
test
测试跟环境(SYMROOT)下的一个 scheme。需要指定一个scheme。需要指定一个 scheme 和一个可选的目标。
installsrc
拷贝工程代码到源代码根目录(SRCROOT)。
install
编译 target 并且安装到发布目录下的 target 安装目录。
clean
从编译根目录下(SYMROOT)移除编译产品和中间文件。
-xcconfig filename
当编译所有 targets 的时候从指定的文件加载编译设置。这些设置会覆盖其他的编译设置,包括命令行中单独传递的设置。
-dry-run, -n
打印本来要执行但是未执行的命令。
-skipUnavailableActions
跳过不能执行的编译而不是失败。这个选项仅仅在 -scheme 参数使用了的时候有效。
setting=value
设置编译设置的值为 value。
-userdefault=value
设置用户默认设置为 value。
-version
显示 Xcode 的版本信息。不会启动编译。当和 -sdk
一起使用的时候,将会显示指定的 SDK 的版本信息,或者-sdk
后面未指定 SDK 则会显示所有的 SDK 版本信息。另外,如果指定了 infoitem
参数则一个单行的版本信息将会显示。
-usage
显示 xcodebuild
的使用信息。
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 5s' -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'
本文采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议。允许保持署名及原文链接转载,不得用于商业目的。