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。

有两个步骤

  1. 用xcodebuild档案建立档案
  2. 使用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。英国..