【问题标题】:Mac OS X app crash with Code Signature Invalid errorMac OS X 应用程序因代码签名无效错误而崩溃
【发布时间】:2014-01-26 11:25:57
【问题描述】:

我为 OS X 编写了一个应用程序,当我将应用程序存档并将其导出为应用程序并尝试打开时,它会因代码签名无效错误而崩溃。

我创建了 Mac App Distribution、Mac Installer Distribution、Developer ID Application、Developer ID Installer 证书和分发配置文件。该应用是沙盒的,我在 Mavericks 上对其进行了测试。

Exception Type:  EXC_CRASH (Code Signature Invalid)
Exception Codes: 0x0000000000000000, 0x0000000000000000

VM Regions Near 0x7fff71ce90a8 (cr2):
    __LINKEDIT             00007fff67043000-00007fff67057000 [   80K] r--/rwx SM=COW  /usr/lib/dyld
--> Submap                 00007fff70000000-00007fff80000000 [256.0M] r--/rwx SM=PRV   process-only VM submap
unused shlib __DATA    00007fff708d3000-00007fff730dc000 [ 40.0M] rw-/rw- SM=COW  system shared lib __DATA not used by this process

Thread 0 Crashed:
0   dyld                            0x00007fff66fd1028 _dyld_start + 0

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x000000000000000d  rbx: 0x0000000000000000  rcx: 0x0000000000000000  rdx: 0x0000000000000000
  rdi: 0x0000000000000000  rsi: 0x0000000000000000  rbp: 0x0000000000000000  rsp: 0x00007fff5eda9d30
  r8: 0x0000000000000000   r9: 0x0000000000000000  r10: 0x0000000000000000  r11: 0x0000000000000000
  r12: 0x0000000000000000  r13: 0x0000000000000000  r14: 0x0000000000000000  r15: 0x0000000000000000
  rip: 0x00007fff66fd1028  rfl: 0x0000000000000201  cr2: 0x00007fff71ce90a8

Logical CPU:     0
Error Code:      0x020000f4
Trap Number:     133


Binary Images:
0x7fff66fd0000 -     0x7fff67003817  dyld (???) <D1DFCF3F-0B0C-332A-BCC0-87A851B570FF> /usr/lib/dyld

External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 47204
thread_create: 0
thread_set_state: 1299

分发配置文件有问题。当我为发布设置 none 或 mac team 配置文件时,它就可以工作了。我使用 iCloud 和应用内购买。

当我启用 iCloud 或应用内购买时,问题就开始了。如果我禁用它们,那么一切正常。如果我启用其中一个,那么我的配置文件设置为无并且它可以工作,但是当我将其更改为我的分发配置文件时,就会停止工作。

谁能告诉我怎么回事?

【问题讨论】:

  • 显示您收到的错误的副本。此外,请仔细检查 Xcode 项目中的 Code Signing 设置,以确保签名正确应用于每种构建类型。
  • 我检查过,我认为一切正常。我已将代码签名身份设置为第 3 方 Mac 开发人员应用程序和配置文件,并将其设置为我创建的分发配置文件。
  • 我还将其他代码签名标志设置为 --deep,也许这是个问题?
  • 很抱歉碰到这个老问题。但是你最终成功了吗?我和你有类似的问题

标签: macos sandbox


【解决方案1】:

您可能根本没有问题。读: Technical Q&A QA1884 测试 Mac 应用的分发版本

据此,您不应该能够自己创建安装程序包。您要制作一个包并通过终端检查它,但它不会运行。

顺便说一句,上述技术报告中有错误。您可能必须包含应用程序的完整路径,因此命令:

sudo installer -store -pkg Sample.pkg -target /

应该改为:

sudo installer -store -pkg /user/yourname/desktop/Sample.pkg -target /

以上示例假设您的installer.pkg 在桌面上。

如果你得到了所有的通行证,那么你很好。

也让我发疯,因为我上传的最后一个应用程序(6 月)刚刚安装 pkg 没有问题,并且它安装的应用程序运行正常。

【讨论】:

【解决方案2】:

您是否将此构建为只能在某些设备上运行的测试版?当我得到一台新的 Mac 并忘记安装我的 beta 测试人员证书时,我遇到了这个确切的错误。

我在配置我的个人资料时也遇到了一些麻烦。当我找到有效的配置时,我创建了这个屏幕截图,这样我就不会忘记。也许有帮助:

编辑:还要确保对您自己编译的所有框架进行代码设计。每个框架都必须单独签名。

【讨论】:

  • 不,我用所有设备的分发证书编译它。除了 Apple 框架,我使用 Dropbox 框架和 Google API Client 框架。我应该怎么签名?
  • 当我启用 iCloud 或应用内购买时问题开始了。如果我禁用它们,那么一切正常。如果我启用其中之一,那么我的配置文件设置为无并且它可以工作,但是当我将它更改为我的分发配置文件时,就会停止工作。
  • 我既没有签署 Dropbox 框架也没有签署 Google 框架。我猜你已经创建了一个工作区,然后在那里添加了框架?如果您编译它们,您可以在 Xcode 侧边栏中单击它们 (⌘+1) 并找到它们的代码签名选项。是的,这是一个配置文件。我还没有使用过 InApp 和 iCloud。您可以只启用其中一个并查看哪个会导致错误吗?
  • 我认为Dropbox或Google框架没有问题,因为它在我禁用iCloud时有效,所以我认为只有在我使用iCloud时才会这样做。
  • 嘿@BartoszBialecki。非 MAS 应用程序不支持 iCloud,您可以在此处查看 developer.apple.com/osx/distribution/#outside。在将支持 iCloud 的 Mac 应用程序提交给 MAS 之前,您是否找到了任何其他方法来分发测试版?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多