我正在构建一个电子应用程序,以便通过Mac App Store进行分发。我在弄清楚哪些代码签名可以在哪个版本的Mac OSX上工作时遇到了麻烦,因为有时我的版本会在启动时崩溃,有时它们会很好。
我让该应用正确进行了公证并将其提交给Apple。他们拒绝了它,因为它在Mac OS X 10.4.6和10.14.3中启动时崩溃了(我不知道他们是否尝试过其他Mac版本)。
由于无法重现该问题,因此在我的本地版本中,我弄清楚了如何使用Developer ID和3rd Party Mac Developer身份来签署开发版本。
以这种方式签名后,我能够重现并修复崩溃。 (我需要添加
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
进入我的权利文件。
现在,已签名的应用程序可以工作了。因此,我进行了新的构建过程,以通过质量检查进行测试的方式创建签名的应用程序。
但是第一台经过测试的Mac运行的是10.12.6,崩溃日志Could not set sandbox profile data: Operation not permitted (1)
中它们只是出现了白屏,并且出现了此故障
现在,如果我给他们一个未签名的版本,它将很好地启动。
这是我应该期待的吗?我似乎找不到Apple提供的有关在Catalina的新公证要求之外在哪种版本的Mac OSX中可以使用哪种代码签名的文档。
我正在尝试确定是否需要对QA进行两个测试构建,具体取决于他们测试的操作系统以及提交给Apple时会发生什么?他们会删除旧版OS的签名吗?
我想在尝试再次提交之前找到答案,因为我不想依靠Apple确保我们的应用不会在较早版本上崩溃。 >
至此,我已经确认,在Mojave和更高版本上签名时,我的应用在任何较低版本的OS中崩溃。我也确实找到了这个https://developer.apple.com/library/archive/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG20
因此,很明显在较旧的Mac OSX版本中启用了代码签名(我认为我终于找到了暗示它始于10.5的内容)。因此,现在的问题是我该如何找出为什么某些版本中具有有效代码签名的东西在其他版本中崩溃的原因。