xcode - macOS 应用公证在上传期间卡住

标签 xcode macos app-store-connect notarize

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

This is where Xcode gets stuck for extended periods of time

我的流程如下:
- 在 Xcode 中“构建 --> 存档”
- 在 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 的进程正在上传相当大量的数据,是我尝试上传到的存档大小的许多倍苹果。我不是 100% 确定这可能是如何相关的,但是当通过 Organizer 或 xcrun altool 命令上传时,该过程总是出现。

我使用的是 Xcode 10.2.1 和 macOS Mojave 10.14.4。

最佳答案

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

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

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

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

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

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

关于xcode - macOS 应用公证在上传期间卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55764900/

相关文章:

iphone - 将通配符包标识符转换为单个 ID

xcode - 如何在 Xcode 中更改失焦文本选择颜色?

xcode - macOS - 如何将 com.apple.developer.driverkit 权利添加到团队配置文件

objective-c - 在调试器中观察 NSString 长度

Xcode 说我安装了 4.2,但只有 4.1 打开

r - Mac OS X R 错误 "ld: warning: directory not found for option"

macos - 在Mac上使用Docker构建Hyperledger Fabric

ios - 在内容提要尚未上线时发布 iOS 应用程序更新

ios - 在矩形绘图ios中输入字母

ios - 从组织者应用提交应用后,iTunes Connect 的事件中未显示