对 Mac OS X 应用程序进行代码签名以进行 Ad-Hoc Beta 分发(使用 HockeyApp)

Posted

技术标签:

【中文标题】对 Mac OS X 应用程序进行代码签名以进行 Ad-Hoc Beta 分发(使用 HockeyApp)【英文标题】:Code Signing a Mac OS X App for Ad-Hoc Beta Distribution (with HockeyApp) 【发布时间】:2014-01-25 17:12:55 【问题描述】:

我有一个 Mac OS X 应用程序,它在调试和发布模式下都已正确配置。也就是说,我可以在我的计算机上以调试模式构建和运行,或者将其存档并成功提交到 AppStore。不过,我想将我的应用的 Beta 版分发给测试人员(通过HockeyApp,FWIW)。

我尝试的第一件事是使用我的 AppStore Distribution 配置文件为 Achiving 构建它。当我尝试在另一台计算机上运行生成的应用程序时,我在启动时立即遇到了Exception Type: EXC_CRASH (Code Signature Invalid) 崩溃。这看起来与这个问题非常相似:Mac OS X app crash with Code Signature Invalid error

当我尝试使用我的调试配置文件配置存档时,我能够在另一台计算机上成功运行它...但前提是我将另一台计算机的 UUID 添加到调试配置配置文件并将此配置文件安装在目标设备。显然,对于我的 Beta 流程来说,这不是一个理想的流程:测试人员必须收集他们的 UUID,将它们发送给我,然后我必须使用新的配置文件剪切一个新的构建。

所以,我的问题是:如何为 Beta 部署配置存档,以便我的测试人员无需提供其 OS X 设备的 UUID 即可下载并运行应用程序?或者,如果我必须收集 UUID,是否有任何简化的方法来解决这个问题(例如通过 HockeyApp)以最大程度地减少测试人员的痛苦?

【问题讨论】:

【参考方案1】:

由于您还在我们的 (HockeyApp) 支持论坛中提出了这个问题,为了完整起见,我也会在这里发布我的答案(请参阅 http://support.hockeyapp.net/discussions/problems/18233-code-signing-a-mac-os-x-app-for-ad-hoc-beta-distribution):

有多种选择:

    使用 Developer-ID 签名的测试版分发 无需配置应用,只需使用您的开发者 ID 对其进行签名并共享该 ID。

    使用预配置的测试版分发 这需要您收集测试人员 Mac 的所有 Mac UUID(仅限 100 台设备)。测试人员必须在 HockeyApp 上注册他们的 Mac,以便您可以收集 UUID 以将它们添加到您的配置文件中。然后,您需要提供带有新配置文件的新版本,或者只上传配置文件,新测试人员必须在下载应用程序之前下载并安装它。

【讨论】:

第二种方法更适合支持 iCloud 的应用程序吗?还是没有影响? iCloud 不能与开发人员 ID 签名的应用程序一起使用。您需要对它们进行沙箱处理并使用 Apple 的 beta 配置系统和 App Store。 谢谢。我一直在寻找,但没有找到任何关于 Mac App Store 的 AdHoc 分发的明确说明。当我尝试在开发人员门户上创建分发配置文件时,它只提供 2 个选项:开发和 Mac App Store(没有“分发”)。对于 Mac App Store,当我将配置文件导入 Xcode 时,它​​显示为“第 3 方 Mac 开发人员应用程序”......这是正确的方法吗?我的预感是这指的是其他东西,比如当您直接从您的网站分发应用程序时没有 MAS?我计划使用 Hockey 进行临时测试,如果这有影响的话 据我所知,您需要使用开发配置文件,因为 Mac 没有 Ad-Hoc 分发配置文件。 不断遇到com.apple.developer.ubiquity-container-identifiers entitlement is not allowed 问题。尝试过开发者资料和应用商店资料;似乎都不起作用。存档部分有效,但在我导出应用程序后无效。

以上是关于对 Mac OS X 应用程序进行代码签名以进行 Ad-Hoc Beta 分发(使用 HockeyApp)的主要内容,如果未能解决你的问题,请参考以下文章

开发人员 ID 签名的 OS X 应用程序在启动时因代码签名无效而崩溃

为啥我不能对这个 Mac 应用程序进行代码签名?

MAC os x 10.8+ 代码签名证书详细信息

"Mac OS X"想要进行更改。键入管理员的名称和密码以允许执行此操作("Mac OS X"想使用系统钥匙串)

无法对 Mac 应用程序进行代码签名

是否可以在 Mac OS X 上通知 DTrace 动态生成的代码?