Mac OS X应用程序崩溃,代码签名无效错误

时间:2014-01-08 11:27:53

标签: macos sandbox

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

我创建了Mac App Distribution,Mac Installer Distribution,开发者ID应用程序,开发者ID安装程序证书和分发provisiong配置文件。该应用程序是沙盒,我在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 provisioning配置文件时,它可以工作。我使用iCloud和In-App Purchase。

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

有人可以告诉我出了什么问题吗?

3 个答案:

答案 0 :(得分:2)

你可能根本没有问题。读: 技术Q&amp; A QA1884 测试Mac应用程序的分发版本

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

顺便说一句,此技术报告中存在错误。您可能必须在sudo installer -store -pkg Sample.pkg -target /中包含应用程序的路径 它应该是:  sudo installer -store -pkg /user/yourname/desktop/Sample.pkg -target

此示例假定您的installer.pkg位于桌面上

如果你获得所有通行证,那么你很好。

让我疯狂,因为我在六月上传的最后一个应用程序刚刚安装的pkg没有问题,而且它安装的应用程序工作正常。

答案 1 :(得分:1)

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

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

Screenshot of developer profiles

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

答案 2 :(得分:1)

我有这个问题,但幸运的是我有两个应用程序 - 一个有效,一个没有。最终,这一个单一的变化为我解决了这个问题:

BAD:

Provisioning Profile: MacTeam Provisioning Profile: <the app's bundle id>

GOOD:

Provisioning Profile: Automatic

我认为直接向人们发送应用时,个人资料无效。自动适用于发送给人和发送到应用商店。