从Debug到Release,您需要在iPhone上运行Xamarin应用程序所需的所有知识都可以构建。

如果您在与我将要描述的情况类似的情况下使用Xamarin Forms,您可能会发现这篇文章很有帮助。 您编写代码没有问题,但是似乎每次都要处理iOS上的证书和预配配置文件时,您总是会感到困难。 任何人都很难记住他们几个月前的所作所为。 这是可以理解的,因为编写代码每天都在发生,而处理证书和配置文件只是偶尔发生。

不幸的是,目前所有可用的文档都很难理解。 一些文档或文章的链接内部包含链接(例如,指向指针的指针)。 有些不是专门为Xamarin写的。 有些是为Xamarin编写的,但没有利用Mac上的最新Visual Studio。

因此,我的目标是写一篇全面的文章,以帮助您从零开始到发行再到发行后及以后。 它从计划开始。

但是在开始之前,我想指出,我将添加另一种构建模式。 这是完全可选的,您不必一定要使用。 通常,您将具有Debug和Release版本。 正如您所期望的。 但是这种称为Stage的附加构建模式可以帮助我创建一个版本,就像Release版本一样,但是它不会发布到App Store,而是以临时方式(例如,通过)分发给我的团队成员(经理,销售人员等) HockeyApp。 下表比较了Debug,Stage和Release:

因此,让我们开始吧。 步骤如下:

注册设备(在developer.apple.com上)

只需点击以下链接。 与Google协商以找到获取设备UDID的方法。

使用您的Apple ID登录– Apple Developer
使用您用来注册或立即注册的Apple ID。 developer.apple.com

请注意,几乎不可能预先知道所有设备。 在项目进行过程中,您将需要出于某种原因添加新设备。 要记住的是,当在此处添加新设备时,您将必须重新创建配置文件(但无需重新创建证书,稍后将对此进行描述)

注册应用程序(在developer.apple.com上)

再次,相当简单。 只需点击链接

使用您的Apple ID登录– Apple Developer
使用您用来注册或立即注册的Apple ID。 developer.apple.com

我最初遇到的问题是使用“ Explicit App ID”选项还是“ Wildcard App ID”选项。 要回答,我发现选择“ Explicit App ID”选项更加容易和直接。 将来再制作一个应用程序? 只需重新注册一个新的“捆绑ID”即可。

重要的是要注意,您在此处指定的“ Bundle ID”必须与代码中的iOS项目的Info.plist中的Bundle Identifier匹配。 只需按照苹果公司的建议,并使用com.domainname.appname模式作为捆绑ID。

创建证书(在Visual Studio for Mac上完成)

在Visual Studio上,查找第一个名为“ Visual Studio社区”的菜单项,选择“首选项”,然后选择“ Apple开发者帐户”。 登录并选择“查看详细信息”

现在,我们将创建1个“ iOS开发”证书和1个“ iOS分发”证书(此分发证书将同时用于Stage和Release)

警告:Visual Studio for Mac 7.0版(内部版本3146)上的此对话框存在错误,并且可能不显示“ iOS Distribution”证书。 但请放心,您可以在developer.apple.com上通过以下链接进行确认

使用您的Apple ID登录– Apple Developer
使用您用来注册或立即注册的Apple ID。 developer.apple.com 使用您的Apple ID登录– Apple Developer
使用您用来注册或立即注册的Apple ID。 developer.apple.com

我们刚刚创建的证书应在1年后过期。 因此,我们永远不必再碰这个。 这与我们可能不得不更频繁地生成的“配置文件”相反。 已经提到了必须注册新设备时的一个原因。 在谈论配置文件时,让我们看一下下一步如何生成它们。

生成配置文件(在developer.apple.com上完成)

我们将生成1个“开发规定概要”和2个“分发规定概要”(1个阶段和1个发布)

单击此链接以生成开发提供概要。 简单。

然后选择应用程序ID,然后选择iOS开发证书,然后选择已注册的设备(在之前的步骤中,所有设备已由您执行)。 最后,在最后一步中,将配置文件命名为“ AppName Development”。

生成此开发准备概要后,继续下载。 对此不做任何事情。 在我们还生成阶段配置文件和发布生产配置文件之后,我们将对其进行处理。

因此,很明显,配置文件取决于App Bundle ID,证书和设备。 只要这三个(应用程序捆绑ID,证书和设备)之一发生更改,我们都必须重新生成一个新的配置文件。 (删除旧版本以保持整洁也是一个好主意)。

单击此链接以生成阶段配置文件。 请注意此处和创建“开发提供概要”时的区别。 在这里,我们选择“分发”下的“临时”选项。

接下来的几个步骤用于选择应用程序ID,证书和设备。 您只需要注意,此处选择的证书必须是iOS发行证书。 最后一步是将配置文件命名为“ AppName AdHoc”。 下载阶段配置文件,然后等待。

使用与舞台相同的链接来生成发行条款概要。 这次,在“发行”下选择“应用商店”选项。

您会看到,这次没有任何页面要求您选择设备。 这是有道理的,因为我们在此处创建的Release Provisioning Profile用于构建将发布到AppStore的应用程序。 下载发行配置文件。

安装配置文件并验证

现在,我们已经在Mac上生成并下载了3个Provisioning Profile。 我们准备安装它们。 但在执行此操作之前,请使用Finder并转到以下路径/ Users / [you] / Library / MobileDevice / Provisioning Profiles

您将看到,通过双击安装它们中的每一个时,带有.mobileprovision扩展名的文件将显示在上面的文件路径中。

在解决方案资源管理器中还有一个地方可以验证所有内容是否正确,右键单击iOS项目并选择“选项”。 对于分别在图6、7和8中进行的Debug,Stage和Release版本,如果一切正确完成,则应该将Provision Profile设置为Automatic。 您不必在这里弄乱任何东西。

如果具备以上条件并进行验证,则可以在“调试”模式下构建应用程序,然后在物理设备(通过USB连接到Mac)上运行该应用程序。 您可以在阶段模式下构建该应用程序,将其存档以在HockeyApp(或类似的东西)上发布,然后分发给您想要的任何人,前提是您必须提前注册他们的设备。 最后,您可以在发布模式下构建,发布到App Store,您的客户和用户可以在其中安装Instagram,Twitter等设备。

兴趣点

我想带着一些兴趣离开这里:

  1. 证书取决于Mac硬件(已安装Xcode和Visual Studio for Mac)。 由于每个配置文件都取决于证书(以及应用程序捆绑包ID和注册的设备),因此您不能简单地将配置文件复制到另一台Mac并期望它可以工作。
  2. 因此,如果您在工作的Mac和家庭的Mac上工作,请使用Visual Studio如上所述在每台Mac上生成证书。 生成配置文件时,可以选择多个证书。 当有2个开发人员在同一个应用程序上工作时,这也是相同的情况。
  3. 如果您不小心删除了Mac上的“配置文件”,请不要担心。 始终可以从您的developer.apple.com门户下载它们。
  4. 如果您在developer.apple.com门户上删除配置文件,请不要担心。 它们始终可以重新生成。 请记住,Mac上已经存在的那些不再有效。 只需转到文件路径/ Users / [you] / Library / MobileDevice / Provisioning Profiles ,然后将其移至回收站即可。 下载新生成的文件,然后双击它们进行安装。
  5. 由于“供应配置文件”也取决于注册的设备,因此,如果您或某些团队成员必须更换iPhone,请重复上述步骤。
  6. 同样,如果您不小心吊销了developer.apple.com上的证书,也不必担心。 它们将在1年后过期,无论如何您都必须重复上述步骤。