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