Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c XCode 6.3更新后的代码签名问题_Objective C_Xcode_Code Signing_Code Signing Entitlements - Fatal编程技术网

Objective c XCode 6.3更新后的代码签名问题

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之后它会工作 我没有更改有关代码签名的任何设置。项目结构相当复杂,它有参考

我最近更新了XCode 6.3,开始出现一些奇怪的代码签名问题。有时候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
参考资料:


可能重复:我遇到了同样的问题,进入“首选项”->“帐户”->“查看详细信息”,然后点击左下角的“刷新”按钮,为我解决了这个问题。我无法如此轻松地删除--deep。当我使用helper应用程序时,其他项目包括framwork和一个小部件。必须分别签署。但很高兴知道这一点——深层次是原因,需要消除。
codesign --verify --verbose --deep MyApp.app
spctl --verbose --assess --type execute MyApp.app