发布指的是将构建好的应用提供给不是你的团队中的开发者的其他人,并在他们的设备上运行。有两种发布方式:
Ad Hoc发布
将应用副本提供给有限的一些已知用户以便他们能够在自己特定的设备上使用并报告Bug、提出建议等。
App Store发布
将应用提供给App Store,这样任何人都可以下载(可能是收费的)并运行应用。
要想创建应用副本来发布,首先需要构建应用归档,随后将这个归档导出供Ad Hoc或App Store发布使用。归档本质上是个保存好的构建。它有3个主要的目的:
发布
归档作为Ad Hoc发布或App Store发布的基础。
重现
每次构建时,条件都可能会发生变化,这样生成的应用的行为就可能出现些许不同。不过归档会保留特定的二进制构建;通过特定归档的每次发布都可以确保包含相同的二进制文件,这样其行为就是完全一致的。这对于测试非常重要:如果Bug报告是根据从特定归档发布的应用生成的,那么你可以通过Ad Hoc发布该归档,并在自己的设备上运行,这时测试的就是完全一样的应用。
符号化
归档包含了一个.dSYM文件,Xcode可以通过它接收到崩溃日志并报告代码中的崩溃位置。这样就可以处理来自于用户的崩溃报告了。
下面介绍如何构建应用归档:
1.将项目窗口工具栏方案弹出菜单中的目标设为iOS Device。设定好之后,Product→Archive菜单项将会被禁用。无须再连接设备;你所构建的输出并不是要在特定的设备上运行,而是要构建在某些设备上运行的归档。
2.如果愿意,还可以编辑方案,确认发布构建配置用于Archive动作。这是默认值,不过复查一下也没什么坏处。
3.选择Product→Archive。应用会编译并构建。归档本身会存储到用户目录Library/Developer/Xcode/Archives下的一个日期目录中。此外,它还会列在Xcode组织器窗口(Window→Organizer)Archives下;该窗口可能会自动打开,显示刚才创建的归档。你可以在这里添加注释;还可以修改归档的名字(这并不会对应用的名字造成影响)。
要想基于归档进行发布,你还需要一个发布身份(电脑钥匙链中存储的一个私钥和一个发布证书)和针对该应用的发布配置。如果进行Ad Hoc发布与App Store发布,那就需要针对每个发布的单独的发布配置。只有开发者计划成员才能获得发布身份与配置文件。
如果在组织器窗口中看到如下信息:“Distribution requires enrollment in the Apple Developer Program”,那就说明你之前并没有注册开发者计划成员。现在正是时候!如果没有开发者计划成员,组织器窗口就像个蟑螂汽车旅馆:只能登记,无法结账。
可以像之前介绍的获取开发身份那样在Xcode中获取发布身份:在账户首选项窗格团队View Details对话框中,单击iOS Distribution右侧的Create按钮。如果不起作用,那就请手工获取发布证书,就像之前介绍的手工获取开发证书一样。
从理论上来说,在导出归档时,Xcode还会创建出恰当的发布配置。不过,这个功能常常不好用;我总是通过浏览器在会员中心手工创建发布配置。下面是具体做法:
1.如果是Ad Hoc发布配置,那么请收集应用所要运行的所有设备的UDID,然后在会员中心Devices下将其添加进去(对于App Store发布配置,请忽略这步)。
2.确保应用在会员中心注册过了,就像本章之前所介绍的那样。
3.在会员中心Provisioning Profiles下,单击“+”按钮添加一个新的配置。在Add iOS Provisioning Profile表单中,指定一个Ad Hoc配置或App Store配置。在下一个页面中,从弹出菜单中选择应用。接下来,选择发布证书。然后(只针对Ad Hoc发布),指定希望这个应用所运行的设备。在下一个页面中,为配置起个名字。
请注意配置的名字,因为接下来需要在Xcode中能够识别出这个名字!我的做法是通过单词“Ad‐Hoc”或“AppStore”再加上应用名作为配置的名字。
4.单击Generate生成配置。要想获得该配置,请单击Download,然后找到下载的配置并双击它在Xcode中查看,或是打开Xcode账户首选项窗格View Details对话框,单击左下角的Download All按钮让Xcode下载它。