xcodebuild:从命令行部署iOS应用
将iOS应用程序部署到iTunes Connect涉及各种事情,这既耗时又脆弱。 对于iOS开发人员来说,使用Xcode来构建,测试,存档和上传应用程序到iTunes Connect是非常普遍的做法。 幸运的是,Apple具有执行所有这些操作的命令行工具,并且最受欢迎的实用程序之一是xcodebuild。 Apple Developer工具上有一个名为Fastlane的精美包装器,可用于脚本编写iOS应用程序的部署。 您可能想知道为什么我们需要使用命令行来部署iOS应用程序。 您能想象没有Xcode的日子吗? 还是可以考虑从没有GUI访问权限的服务器上部署应用程序? 或者,如果您没有Ruby的脚本编写技能来使用Fastlane,该怎么办?
在构建,测试,存档和上传应用程序时,我们必须知道幕后发生的事情。 我们应该知道用于所有这些活动的本地Apple开发人员工具。 通过学习命令行交互,我们可以获得以下好处
- 深入了解在构建,部署iOS应用程序时使用的基本Apple技术。
- 易于自动化iOS开发任务以实现持续集成或基于云的服务器
- 更好地了解Fastlane等工具在后台执行的操作。
在本文中,我们将了解如何构建,测试,存档示例iOS应用程序并将其部署到iTunes Connect。
前提条件
为了了解命令行部署过程,我们应该预先设置以下内容。
- 带有Xcode工作区的示例应用程序。 例如CLI.xcworkspace
- 具有发布配置的Xcode方案: CLI发行
- 在iTunes Connect中生产的证书,AppID,置备配置文件设置。 使用Apple的文档来设置所有内容。 在本教程中,我们将假定配置配置文件CLI分发配置文件。
- 钥匙串中具有分发证书的macOS
我们将介绍从分析应用程序到使用xcodebuild部署到iTunes Connect的iOS应用程序的周期。
分析
在构建和测试iOS应用之前,要做的明智的事情之一是对源代码执行静态分析。 xcodebuild具有清除和分析源代码中任何常见语法错误的功能。 我们可以传递Xcode项目,例如CLI.xcodeproj
$ xcodebuild -project CLI.xcodeproj -scheme CLI -sdk iphonesimulator10.3干净的分析
建造
我们可以使用xcodebuild’build’操作构建一个iOS应用程序,该操作会为我们的iOS应用程序生成派生数据。 构建应用后,它可以在模拟器中运行,也可以由测试包使用。
运行运行
我们可以使用简单的命令简单地构建应用程序以在模拟器中运行
$ xcodebuild -scheme CLI -workspace CLI.xcworkspace / build
这将在〜/ Library / Developer / Xcode / DerivedData /目录中创建一个派生数据。 我们可以通过各种选项来覆盖默认设置,以便我们可以控制工件,例如-destination或-derivedDataPath等。
进行测试
Xcode 8引入了这个不错的功能,它允许一次构建并使用派生数据.xctestrun文件在不同的目的地测试多个时间。
我们可以使用以下命令进行测试:
$ xcodebuild-test-build -workspace CLI.xcworkspace -scheme
CLI-目标通用/平台= iOS
现在,我们可以使用无构建测试操作来运行测试,而无需构建应用程序。
测试中
苹果拥有XCTest框架来执行iOS应用程序的单元和UI测试。 我们可以更新发布方案以包括测试套件。 假设我们的“ CLI”方案配置为运行测试,那么我们可以使用
$ xcodebuild -scheme CLI -workspace CLI.xcworkspace /测试
这将构建我们的方案并开始为该特定测试执行测试。
无需构建测试
如果您使用上面提到的“测试构建”选项构建应用,我们可以使用相同的派生数据在多个目标上执行测试。
$ xcodebuild test-without-building -workspace CLI.xcworkspace
-scheme CLI -destination'platform = iOS
模拟器,名称= iPhone 7'-目标
'平台= iOS,名称=我的iPad'
这将在iPhone和iPad上执行测试。 我们不必两次构建应用程序即可在不同的目的地运行测试。
封存
大多数iOS工程师发现归档iOS应用程序的过程非常痛苦,因为它涉及到处理配置文件,证书和构建配置。 为了将应用程序上载到iTunes Connect或将其部署到配置的设备上,我们需要针对通用iOS设备目标构建和应用程序,并以IPA格式导出它。
让我们使用发布配置方案“ CLI”和通用iOS设备目标来构建我们的应用。
$ xcodebuild -workspace CLI.xcworkspace \
-方案CLI \
-destinationgeneric / platform = iOS构建
xcodebuild有一个新的-exportArchive选项,以创建更像Xcode Organizer的IPA。
有两个步骤
- 用xcodebuild档案建立档案
- 使用xcodebuild -exportArchive创建.ipa
现在,我们像这样构建档案:
$ xcodebuild -workspace CLI.xcworkspace -scheme CLI -sdk iphoneos-配置AppStoreDistribution存档-archivePath $ PWD / build / CLI.xcarchive
我们现在像这样导出.ipa:
$ xcodebuild -exportArchive -archivePath $ PWD / build / CLI.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $ PWD / build
这两个命令创建文件build / myApp.xcarchive和build / myApp.ipa
请注意,以上命令需要使用-exportOptionsPlist参数,该参数指向带有导出选项的.plist文件。 有关可放入该plist的内容的完整列表,请运行xcodebuild -help。 文件的最小内容如下所示:
方法
应用商店
teamID
YOUR_TEN_CHARACTER_TEAM_ID
成功运行此命令后,将使用供应配置文件“ CLI分发配置文件”创建IPA文件。 最后,我们将准备好IPA,CLI.ipa二进制文件上传到iTunes Connect。
将IPA上载到iTunes Connect
部署我们的应用程序的最后一步是将二进制文件上传到iTunes Connect。 通常,Xcode具有“ Application Loader”应用程序来执行此任务。 幸运的是,我们为Application loader应用程序提供了名为“ altool”的命令行界面。 Xcode随附了altool的二进制文件,因此无需单独下载。 二进制文件通常位于路径
/Applications/Xcode.app/Contents/Applications/Application \ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool
最好将该二进制文件导出到$ PATH,以便可以从任何地方访问它。 我们可以使用此二进制文件将IPA上载到iTunes Connect。 假设我们在钥匙串中具有这些凭据或将其作为ENV变量$ USERNAME和$ PASSWORD,我们需要使用Apple ID用户名和密码进行上传
$ altool --upload-app -f“ CLI.ipa” -u $ USERNAME -p $ PASSWORD
您可以在Apple官方文档中探索“ altool”的其他命令行选项。 上传将花费大量时间,但请耐心等待并享受将IPA上传到iTunes connect的过程。
接下来是什么
现在,我们已经成功将IPA上传到iTunes Connect,我们可以分发给testFlight进行内部测试,也可以将其提交给Apple,以便从iTunes Connect进行审查。
在此阶段,您可能对Apple用来构建,存档和将iOS应用程序部署到iTunes Connect的内部工具有一个简要的了解。 还有其他各种开源包装器可以使我们的生活变得轻松,例如Fastlane,ios-deploy等。如果您认为缺少某些东西,请发表评论
开心连续发货!
像XCBlog的 XCTEQ 发布的帖子一样 ? 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 在 Github 上 搜索我们的 服务 ,开源项目, 或者在 Twitter , Facebook , Youtube 和 LinkedIn 上关注我们 。 下载我们的 XCBlog iOS应用程序以离线阅读博客。
X CTEQ 是一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 为 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..