Xcode 4.6.3中Dropbox API的代码签名失败:“代码对象根本没有签名”
我有一个OS X应用程序,通过Mac App Store分发,最近更新到Xcode 4.6.3。
当我现在运行我的常规构build时,我会收到:
Command /usr/bin/codesign failed with exit code 1: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app: code object is not signed at all In subcomponent: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app/Contents/Frameworks/DropboxOSX.framework Command /usr/bin/codesign failed with exit code 1
我似乎无法辨别出我的项目中的任何其他更改,所以我不能确定它是与4.6.3更新还是其他问题有关。
我已经尝试重新启动Xcode,运行一个干净的生成,并清理生成文件夹。
我想我可能已经明白了这一点。 我一直在OS X Mavericks上运行Xcode 4.6.3,这个印象是任何特定于构build的工具都捆绑在Xcode应用程序中。
但是,似乎codesign
在/usr/bin
。 无论它是由Xcode安装程序之一,还是配备了一个vanilla系统安装,我不知道。 但通过阅读man
页的codesign
,我发现这个漂亮的选项:
--deep When signing a bundle, specifies that nested code content such as helpers, frameworks, and plug-ins, should be recursively signed in turn. Beware that all signing options you specify will apply, in turn, to such nested content. When verifying a bundle, specifies that any nested code content will be recursively verified as to its full content. By default, verification of nested content is limited to a shallow investigation that may not detect changes to the nested code. When displaying a signature, specifies that a list of directly nested code should be written to the display output. This lists only code directly nested within the subject; anything nested indirectly will require recursive application of the codesign command.
然后我从两周前(〜2013年6月)发现了这个post( https://alpha.app.net/isaiah/post/6774960 ),其中提到(虽然是二手的):
@isaiah我问了一个在实验室里的人。 他说Codeign现在要求在代码签名之前分别签署embedded式框架作为整体。
手动重新运行Xcode正常运行的--deep
命令,同时在--deep
添加--deep
标志,正确地签署应用程序。
我还不确定这个手动签名有什么后果,或者我是否可以调整Xcode构build来自动添加--deep
标志,但这似乎是潜在的问题。 ( codesign
不再自动深入地签署你的应用程序包。)
正如在其他答案中强调的那样,代码签名的工作方式有所改变。 如果您安装了任何Xcode 5 DP,那么即使您使用的是Xcode 4.6.X,新工具也将被使用。
在这个阶段(Xcode 4.6.X)你需要做的就是把上面提到的–deep标志加到你的代码签名标志(Target,Build Settings)中,如下图所示。
对我来说,这个问题是由于在我的项目中拖拽一个名为“resources”的文件夹造成的。 在将其名称更改为其他任何名称(例如“resourcessss”)后,错误消失。
我有同样的问题,但答案很简单:我的应用程序的代码签名身份设置为“ – ”,所以简单地设置为“不要代码签名”固定了我。
“ – ”似乎是您执行某些操作时的默认设置,尽pipe我无法告诉您这些是什么。
这可能有助于somone:
我终于找出了试错的解决scheme。 在我的情况下,我有一个文件夹名称匹配生成设置下的“产品名称”variables。 这也匹配整个项目名称! 所以我只是改变了一个领域。 我更改了“生成设置” – >“产品名称”。 MySpecialApp的值已更改为My-SpecialApp。 那就是它! 然后,我重新login到Apple开发人员门户网站,并为开发和分发创build了一个新的应用程序ID和移动设置configuration文件,剩下的就是历史。 现在,我的发行版通过Ad Hoc发行版进行部署。 关于这个的最后一个注释。 这绝对是一个错误,苹果应该提醒用户,他们做了错误的事情,并启用某种自动纠正措施。 – 更多信息,请访问: http : //www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC。 dpuf
对我来说,这是一个损坏的Framework PaddleMAs其中:1.我从我的Cocoapods文件中删除2. Ran pod install
3.重新启动我的Xcode
并解决了这个问题。 由于某种原因,一个损坏的框架会阻止它被签名,不幸的是,XCode不会很清楚地显示这个错误,并给你一个很好的修复build议。 已经提出了一个苹果的错误修复。