我有一个OS X应用程序,它通过Mac App Store分发,最近更新为Xcode 4.6.3。
当我现在运行常规版本时,我会收到:
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,运行干净的构建,并清理构建文件夹。
答案 0 :(得分:140)
我想我可能已经想到了这个。我一直在OS X Mavericks上运行Xcode 4.6.3,并认为任何特定于构建的工具都捆绑在Xcode应用程序中。
但是,似乎codesign
位于/usr/bin
。无论是由一个Xcode安装程序放在那里还是附带一个vanilla系统安装,我都不确定。但是,通过man
的{{1}}页面,我发现了这个漂亮的选项:
codesign
然后我在两周前(〜2013年6月)发现了这篇文章(https://alpha.app.net/isaiah/post/6774960),其中提到了(虽然是第二手):
@isaiah我在实验室里问过一个人。他现在说代码签名 要求嵌入式框架在代码之前单独签名 整个签署应用程序包。
手动重新运行Xcode正常运行的--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.
命令,同时在末尾添加codesign
标志,正确签署应用程序。
我还不确定这个手动签名到底有什么影响,或者我是否可以调整Xcode构建以自动添加--deep
标志,但这似乎是潜在的问题。 (--deep
不再自动对您的应用包进行深度签名。)
答案 1 :(得分:67)
正如其他答案中所强调的那样,代码签名的工作方式发生了变化。如果您安装了任何Xcode 5 DP,那么即使您使用的是Xcode 4.6.X,也会使用新工具。
在这个阶段(在Xcode 4.6.X中)你需要做的就是采用上面建议的--deep标志并将其添加到你的代码签名标志(Target,Build Settings)中,见下图。
答案 2 :(得分:12)
对我来说,这个问题是在项目中拖动名为“resources”的文件夹后引起的。将其名称更改为其他任何内容(例如“resourcessss”)后,错误消失了。
答案 3 :(得分:4)
我遇到了同样的问题,但答案很简单:我的应用上的代码签名身份设置为" - ",所以只需将其设置为"不要代码登录"把我搞定了。
" - "当你执行一些操作时似乎是默认设置,虽然我不能告诉你它们是什么。
答案 4 :(得分:2)
这可能有助于somone:
我终于通过反复试验找出了解决方案。在我的情况下,我有一个文件夹名称与构建设置下的“产品名称”变量匹配。这也与整个项目名称相匹配!所以我只是换了一个字段。我更改了“构建设置” - > “产品名称” 。 MySpecialApp的值已更改为My-SpecialApp。那就是它!然后我重新登录Apple开发人员门户网站,为开发和分发创建了一个新的App ID和移动配置文件,其余的都是历史。我的版本现在可以通过Ad Hoc发行版进行部署。 关于此的最后一点。这绝对是一个错误,Apple应该警告用户他们做错了什么并启用某种自动纠正措施。 - 请参阅:http://www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC.dpuf
答案 5 :(得分:0)
对我来说,这是一个损坏的Framework PaddleMAs:
我从Cocoapods文件中删除了
2.跑pod install
3.重新启动我的Xcode
它解决了这个问题。由于某种原因,损坏的框架将阻止它被签名,不幸的是XCode没有真正清楚地显示这个错误,并给你一个很好的修复建议。已经提出了与Apple修复的错误。