macOS App 公证在上传过程中卡住

macOS App notarisation stuck during upload

我有一个简单的、基于 Swift 的 macOS 应用程序,在 Xcode 中编写和维护,我现在想 运行 通过 Apple 的 Developer-ID "notarisation"分发服务。但是,每当我尝试上传应用程序的存档版本时,Xcode 就会卡在该过程的 "Uploading package to Apple Services..." 步。

我的流程如下:
- 在 Xcode "Build --> Archive"
- 在 Xcode 的管理器中:分发应用程序 --> 开发者 ID --> 上传 --> 自动代码签名 - 问题现在出现在上传过程中。

我已经尝试过公证一个简单的示例应用程序,除了标准 Swift macOS 项目模板包含的代码外,没有任何代码,并且该应用程序也卡在了这一步。 (所以这应该可以消除我项目本身的代码/二进制文件的问题。)

我还尝试使用 xcrun altool 使用以下命令将我的二进制文件上传到公证服务:xcrun altool --notarize-app --primary-bundle-id "com.me.myapp" --username "myuser@memyselfandi" --password "mypasswd" --file myfile.zip.
这里的结果是相似的:该命令没有输出并挂起。

每次我尝试上传到 Apple 服务时,我还注意到一个名为 ascp 的进程正在上传相当大量的数据,是我尝试上传到 Apple 的存档大小的许多倍.我不是 100% 确定这可能是如何相关的,但是通过管理器或 xcrun altool 命令上传时,该过程总是出现。

我正在使用 Xcode 10.2.1 和 macOS Mojave 10.14.4。

如果您的防火墙阻止了除 HTTPS 之外的传输端口,以下答案可能对您有所帮助。

itunesconnect using application loader behind a firewall

@Tochiji 指出了正确的方向,这是我的问题的解决方法:

我的网络或 ISP 似乎对 Apple 选择的上传到公证服务的传输协议有问题。我通过使用 Little Snitch 查看 ascp 的流量得出了这个结论。该程序正在端口 33001 上从多个 .apple.com 域上传和下载数据包。但是,它从来没有 "gets anywhere" 并且上传仍然卡住,这让我相信我的 ISP 不支持端口 33001 上 运行 的 "Aspera" 协议存在问题.

previous answers on similar issues 之后,我测试了在禁用 Aspera 协议的情况下使用 Application Loader 上传到 Mac App Store,果然,上传成功了。

问题是:Application Loader 不支持上传到 Developer-ID 公证系统并且 Xcode 的集成上传器没有与 Application Loader 相同的选项。

我的解决方法如下:
使用 Little Snitch(或任何其他有效的 macOS 防火墙)我现在 阻止端口 33001 上的所有连接。

这样,Xcode 可以检测到 Aspera 不是一个选项,并选择一个工作正常的回退协议。使用此解决方法,即使在限制性防火墙后面/使用做出有趣决定的 ISP,也可以上传到 Developer-ID 公证服务。