【问题标题】:XCode 6.3 Code Signing Issues after updateXCode 6.3 更新后的代码签名问题
【发布时间】:2015-06-16 03:09:21
【问题描述】:

我最近更新到 XCode 6.3 并开始遇到一些奇怪的代码签名问题。有时 XCode 会开始抱怨代码签名问题。两者都会有类似的问题:

invalid or unsupported format for signature ... Command /usr/bin/codesign failed with exit code 1

... Command /usr/bin/codesign failed with exit code 11

目前还找不到模式,但看起来 XCode 代码符号有问题,因为有时在清理并重新启动 XCode 后它会起作用。

我没有更改任何有关代码签名的设置。项目结构比较复杂,有引用的项目和pods。

任何帮助表示赞赏。

** 更新**

删除派生数据或重新启动 XCode 对我没有帮助。 但如果我删除了项目并从 git 重新下载,它确实有效。这删除了未提交给 git 的 XCode 文件。

清洁后再次停止工作。在控制台日志中我有这样的东西:

codesign[4111]: Internal error unloading bundle CFBundle 0x7fb44a40adc0 <(null)> (framework, not loaded)

** 另一个更新 **

在推特上发现有同样问题的人。 看起来问题是由代码签名中的 --deep 选项引起的

https://github.com/atom/atom-shell/issues/1396

解决方案是不使用 --deep 对应用程序和框架进行代码签名。 而是分别对每个框架进行代码签名。

http://furbo.org/2013/10/17/code-signing-and-mavericks/

【问题讨论】:

标签: objective-c xcode code-signing code-signing-entitlements


【解决方案1】:

在最新的 X-Code 更新之后,我也遇到了这种情况。但是 X-Code 已经建议我更新我的项目设置有一段时间了,我只是还没来得及接受。您提供的链接很好地解释了这一点。

它实际上在导航器中显示为问题,当您选择问题时,X-Code 会自动为您修复它。您只需要自己从构建设置中删除 --deep 选项即可。

这适用于我的 2 个第 3 方框架 Sparkle 和 Syphon。

【讨论】:

  • 我无法轻易删除 --deep 。当我使用助手应用程序时,其他项目包括为框架和小部件。必须单独签署。但很高兴知道 --deep 是原因,需要删除。
【解决方案2】:

问题是由 --deep 代码签名选项和权利引起的。

为了解决这个问题,我不得不手动对框架进行代码签名。 这需要添加新的运行脚本构建阶段,并运行类似于此的脚本:

IDENTITY="HEX_IDENTITY"

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"

FRAMEWORKS_LOCATION="${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH}"
EXECUTABLES_LOCATION="${BUILT_PRODUCTS_DIR}"/"${EXECUTABLE_FOLDER_PATH}"

codesign --verbose --force --deep --verify --sign "$IDENTITY" "$EXECUTABLES_LOCATION/MY_HELPER_APP.app"
codesign --verbose --force --deep --verify --sign "$IDENTITY" "$FRAMEWORKS_LOCATION/MY_FRAMEWORK/Versions/A"

HEX_IDENTITY可以通过shell命令获取:

security find-identity 

这将显示带有十六进制数字的签名身份列表。

将应用程序导出为应用程序后,我使用命令验证了代码签名:

codesign --verify --verbose --deep MyApp.app
spctl --verbose --assess --type execute MyApp.app

参考资料:

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    相关资源
    最近更新 更多