Objective c XCode 6.3更新后的代码签名问题
我最近更新了XCode 6.3,开始出现一些奇怪的代码签名问题。有时候XCode会开始抱怨代码签名问题。其中任何一个都会出现如下问题:Objective c XCode 6.3更新后的代码签名问题,objective-c,xcode,code-signing,code-signing-entitlements,Objective C,Xcode,Code Signing,Code Signing Entitlements,我最近更新了XCode 6.3,开始出现一些奇怪的代码签名问题。有时候XCode会开始抱怨代码签名问题。其中任何一个都会出现如下问题: invalid or unsupported format for signature ... Command /usr/bin/codesign failed with exit code 1 或 还找不到模式,但看起来像是XCode代码符号的问题,因为有时候在清理和重新启动XCode之后它会工作 我没有更改有关代码签名的任何设置。项目结构相当复杂,它有参考
invalid or unsupported format for signature ... Command /usr/bin/codesign failed with exit code 1
或
还找不到模式,但看起来像是XCode代码符号的问题,因为有时候在清理和重新启动XCode之后它会工作
我没有更改有关代码签名的任何设置。项目结构相当复杂,它有参考项目和POD
谢谢你的帮助
**更新**
删除派生数据或重新启动XCode对我没有帮助。
但如果我删除了这个项目并从git下载了fresh,它确实起了作用。这将删除未提交到git的XCode文件
再次清洁后,它已停止工作。在控制台日志中,我有如下内容:
codesign[4111]: Internal error unloading bundle CFBundle 0x7fb44a40adc0 <(null)> (framework, not loaded)
codesign[4111]:卸载捆绑包Cbundle 0x7fb44a40adc0(框架,未加载)时出现内部错误
**另一个更新**
在twitter上发现有人有同样的问题。
看起来问题是由代码签名中的--deep选项引起的
解决方案不是用--deep对应用程序和框架内部进行代码签名。而是对每个框架分别进行代码签名
在最新的X代码更新之后,我也遇到了这种情况。但是X-Code已经建议我更新我的项目设置有一段时间了,我只是还没来得及去做。你提供的链接很好地解释了这一点 它实际上在navigator中显示为一个问题,当您选择该问题时,X-Code将自动为您修复它。您只需要自己从构建设置中删除--deep选项 这与我的两个第三方框架Sparkle和Syphon一起工作。问题是由--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"
可以使用shell命令获得十六进制标识:
security find-identity
这将显示带有十六进制数字的签名身份列表
将应用程序导出为应用程序后,我使用以下命令验证代码签名:
codesign --verify --verbose --deep MyApp.app
spctl --verbose --assess --type execute MyApp.app
参考资料:
codesign --verify --verbose --deep MyApp.app
spctl --verbose --assess --type execute MyApp.app