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