macos - 为什么在通过云服务共享其中一个应用程序后,我的所有应用程序突然开始崩溃并出现 EXC_CRASH(代码签名无效)?

标签 macos crash certificate

昨天,我正在开发我的应用程序的新版本。为了在另一台计算机上测试它,我将其拖放到一个文件夹中,该文件夹通过云服务在我拥有的几台 Mac 计算机之间共享。我认为这可能是一种将应用程序分发到的快速方法在另一台运行旧版本 macOS (10.11) 的计算机上进行测试。

我注意到的第一件事是我无法在测试计算机上启动最新版本。我通过打开 .app 文件夹进行调查并发现所有可执行文件已被禁用(它们看起来像普通文档文件,而不是像终端那样具有图标)。好吧,我想,显然你不能共享这样的应用程序。您需要始终通过磁盘镜像或 zip 文件分发它们,如果您不通过 Mac App Store 进行分发,最好是通过签名磁盘镜像。

我并没有想太多。由于我在位于另一个位置的测试机上安装了 Xcode,因此我重建了我的应用程序,一切都按我的预期运行。

但是,当我回到家并尝试再次使用我的应用程序时,我注意到它的一个助手在启动时开始崩溃,并出现 EXC_CRASH(代码签名无效) 异常。然后我尝试启动我的主应用程序,同样的情况发生了。我尝试使用卸载程序卸载该应用程序,但发生了同样的情况。

所以,我的问题是:怎么会这样?为什么我的所有应用程序都开始崩溃,而就在几分钟前我的所有应用程序都正常运行了?

最佳答案

基本上,我发现发生这种情况的原因是,如果您尝试直接通过云服务共享的文件夹分发应用程序,您的 Mac 开发人员证书可能会被 Apple 吊销。我通过在我的应用程序上运行以下命令来确定这一点:

spctl -a -v path/to/my/app

你瞧,我得到了这个结果:

path/to/my/app: CSSMERR_TP_CERT_REVOKED

我的解决方案是转到我的开发者帐户并单击“撤销”按钮来删除此列入黑名单的证书,然后按照网站中的说明创建一个新证书。

幸运的是,我的应用程序的旧版本没有受到影响,因为它们是由早期证书签名的。但是,如果已分发给您的客户的应用程序是由已吊销的证书签名的,请准备好收到大量投诉并告诉您的用户重新下载已注销的应用程序。它们将在启动时因 EXC_CRASH 异常而被杀死。只需告诉您的同事不要有通过云服务快速分发应用程序的“绝妙”想法。您的 Mac 开发者证书最终可能会被吊销。

关于macos - 为什么在通过云服务共享其中一个应用程序后,我的所有应用程序突然开始崩溃并出现 EXC_CRASH(代码签名无效)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41771688/

相关文章:

cocoa - 我可以将 NSToolbarItem 放在工具栏中居中吗?

macos - OSX 10.10,如何在 sleep 和 panic 后生成核心转储文件?

c++ - GCC 在 Debug模式下崩溃,在 Release模式下运行良好?

ssl - 我得到 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 的另一种情况

iphone - 无法将应用程序上传到 App Store?

crash - 在SQL Job Agent中打开SSIS时SSMS崩溃

ios 应用程序在语言更改后崩溃

ssl - 从证书对象中获取CERT_RDN信息

ios - 两台苹果电脑。一份 iPhone 开发者许可证。可能的?

ios - Mac Catalyst 应用程序在其他 Mac 上崩溃,但从 Xcode 运行时可以正常工作