我有一个使用Xcode编写和维护的基于Swift的简单macOS应用程序,现在我希望通过Apple的Developer-ID“公证”服务运行该软件进行分发。但是,每当我尝试上载该应用程序的存档版本时,Xcode都会卡在该过程的"Uploading package to Apple Services..."
步骤中。
我的过程如下:
-在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 Services时,我还注意到一个名为ascp
的进程正在上传大量数据,是我尝试上传至Apple的档案大小的许多倍。我不确定100%的关联方式,但是在通过管理器或xcrun altool
命令上传时,该过程始终会出现。
我正在使用Xcode 10.2.1和macOS Mojave 10.14.4。
最佳答案
@Tochiji指出了正确的方向,以下是解决我的问题的方法:
看来我的网络或ISP在Apple选择将传输协议上传到公证服务时遇到了问题。通过使用Little Snitch查看ascp
的流量,我得出了这个结论。该程序正在将33001
端口上的数据包从多个.apple.com
域上载和下载。但是,它永远不会“无处可去”,并且上传仍然卡住,使我相信我的ISP存在一个问题,即不支持在"Aspera"
端口上运行的33001
协议。
在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公证服务。
关于xcode - macOS App公证在上传过程中卡住了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55764900/