【问题标题】:MacOS codesign command on Bitrise failure: Segmentation fault: 11Bitrise 故障上的 MacOS 协同设计命令:分段错误:11
【发布时间】:2017-03-15 21:26:32
【问题描述】:

出于某种原因,我需要在 Bitrise 上为我的 macos 应用程序运行手动代码签名。使用以下命令执行此操作时:

codesign --deep --force --verify --verbose --sign "Developer ID Application: Name (ID)" "MyApp.app"

它总是返回错误:

line 11:  3043 Segmentation fault: 11

有人知道怎么解决吗?

【问题讨论】:

    标签: macos code-signing codesign bitrise


    【解决方案1】:

    在寻找可能的解决方案时,我遇到了这两个帖子:

    Segmentation fault: 11 when attempting to codesign .app

    https://forums.developer.apple.com/thread/65055

    他们帮助我找到了解决问题的方法。在第一个链接中标记为正确的答案指出:

    --timestamp=none
    

    会修复它,这对我来说不是真的。但是第二个答案以及第二个链接中提到的解决方案包含正确的提示。

    我需要使用十六进制标识符而不是证书名称进行签名。

    您可以通过执行以下命令获取证书的十六进制标识符:

    security find-identity -p codesigning
    

    使用为我的证书返回的十六进制标识符,这是我需要在 Bitrise 上运行以签署 MyApp.app 的命令

    codesign --deep --force --verify --verbose -s <<hex identifier>> "MyApp.app"
    

    请注意,选项的顺序也很重要。 '-s' 必须是我最后的选择。

    (请记住包括 Bitrise 工作流程步骤“证书和配置文件安装程序”)

    ===编辑===

    我在这里谈论的是 MacOS Sierra 堆栈。

    【讨论】:

    • 感谢分享解决方案@Thor_Bux 请注意:这不是特定于比特的,而是特定于 macOS Sierra。 Sierra 中发生了一些与钥匙串/签名相关的事情,这在 El Capitan 上起作用(有点不同)。需要注意的是,在 bitrise.io 上,您可以同时选择 Sierra 和 El Capitan 堆栈。
    • 我在这里明确提到 Bitrise 的原因是,这个问题不会出现在我的本地 Mac 上,它也运行 Sierra。感谢您提到我应该包含 MacOS 版本。
    【解决方案2】:

    我找到了一个解决方案,而是使用证书的十六进制 id 签名。

    您可以通过运行以下命令找到 HEX ID: security find-identity -v

    这里的信用:--Segmentation fault: 11 when attempting to codesign .app

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多