关闭

xcodebuild脚本打包

4343人阅读 评论(0) 收藏 举报

原文地址:点击打开链接

参考:点击打开链接

参考:点击打开链接

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 国际 许可协议。允许保持署名及原文链接转载,不得用于商业目的。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:245079次
    • 积分:2854
    • 等级:
    • 排名:第12551名
    • 原创:41篇
    • 转载:98篇
    • 译文:9篇
    • 评论:6条
    文章分类
    最新评论