Xcode 6.3更新后的代码签名问题

gk7wooem  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(129)

我最近更新到Xcode 6.3,开始有一些奇怪的代码签名问题。偶尔Xcode会开始抱怨代码签名问题。Acd也会有这样的问题:
签名格式无效或不受支持.命令/usr/bin/codesign失败,退出代码为% 1

.命令/usr/bin/codesign失败,退出代码为11
还找不到模式,但看起来像是Xcode代码符号的问题,因为有时在清理和重新启动Xcode后它会工作。
我没有改变任何关于代码签名的设置。项目结构相当复杂,它引用了项目和pod。
任何帮助感激不尽。

更新

删除派生数据或重新启动Xcode对我没有帮助。但如果我删除项目并从git下载新的,它确实有效。这删除了未提交到git的Xcode文件。
再次清理后,它已经停止工作。在控制台日志中,我得到了这样的东西:
codesign[4111]:卸载捆绑包CFBundle 0x 7 fb 44 a40 adc 0 <(null)>(framework,not loaded)时出现内部错误

更新

在twitter上发现有人有同样的问题。看起来这个问题是由代码签名中的--deep选项引起的
https://github.com/atom/atom-shell/issues/1396

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

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

dohp0rv5

dohp0rv51#

在最新的Xcode更新后,我也遇到了这种情况。但是Xcode已经建议我更新我的项目设置有一段时间了,我只是没有抽出时间来。你提供的链接很好地解释了这一点。
它实际上会在导航器中显示为一个问题,当你选择这个问题时,Xcode会自动为你修复它。你只需要自己从构建设置中删除--deep选项。
这在我的两个第三方框架Sparkle和Syphon上都有效。

5rgfhyps

5rgfhyps2#

问题是由--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


参考文献:

相关问题