昨天,我正在开发我的应用程序的新版本。为了在另一台计算机上进行测试,我将其拖放到我通过云服务拥有的几台Mac计算机之间共享的文件夹中。我认为这可能是一种快速分发应用程序的方式在运行旧版macOS(10.11)的另一台计算机上进行测试。
我注意到的第一件事是我无法在测试计算机上启动我的最新版本。我通过打开.app文件夹调查并发现所有可执行文件已被禁用(它们看起来像纯文档文件,而不是看起来像终端的图标)。好吧,我想,所以显然你不能分享这样的应用程序。您需要始终通过磁盘映像或zip文件分发它们,如果您没有通过Mac App Store进行分发,则最好通过签名磁盘映像进行分发。
我没有想太多。当我在另一个位置的测试机器上安装Xcode时,我重建了我的应用程序,一切都按预期工作。
然而,当我回到家并尝试再次使用我的应用程序时,我注意到其中一个帮助程序在启动时因EXC_CRASH (Code Signature Invalid)
异常而崩溃。然后我尝试启动我的主应用程序,同样的事情发生了。我尝试用我的卸载程序卸载应用程序,但同样的事情发生了。
所以,我的问题是:这怎么可能?为什么我的所有应用程序在我的所有应用程序正常运行前几分钟才开始崩溃?
答案 0 :(得分:18)
基本上,我发现发生这种情况的原因是因为如果您尝试直接通过云服务共享的文件夹分发您的应用程序,您可以通过Apple撤销您的Mac开发人员证书。我通过在我的应用程序上运行以下命令来确定这一点:
spctl -a -v path/to/my/app
瞧,我得到了这个结果:
path/to/my/app: CSSMERR_TP_CERT_REVOKED
我的解决方案是转到我的开发者帐户,然后点击撤销按钮删除此列入黑名单的证书,然后按照网站上的说明创建一个新证书。
幸运的是,我的应用程序的旧版本没有受到影响,因为它们已经被早期的证书签名。但是,如果已经分发给您的客户的应用程序已通过已撤销的证书签名,请准备好接收大量投诉,并告诉您的用户重新下载已重新签名的应用程序。它们将在启动时以此EXC_CRASH异常被杀死。告诉你的同事不要拥有“辉煌的”#34;通过云服务快速分发应用程序的想法。您最终可能会撤销Mac开发人员证书。