XCode 6.1.1无法编码:“代码对象根本没有签名”只有1个框架

时间:2015-02-23 01:41:02

标签: xcode macos osx-mavericks code-signing

我正在尝试使用XCode 6.1.1在OSX 10.9.5上使用SDL 1.2构建项目。

对SDL_Mixer 1.2.12&的复制进行代码签名。 SDL_Image 1.2.12框架失败,因为它们包含子框架。

所以我将这些子框架移出了SDL框架,除了webp.framework之外,所有子框架都可以签名,不包含任何子框架。

构建&错误信息是:

  

CodeSign / Users / manu / Library / Developer / Xcode / DerivedData / Tennis_Elbow_Manager-ejjxrszvggswuwbqutndhmguwbxc / Build / Products / Debug / Tennis \ Elbow \ Manager.app/Contents/Frameworks/webp.framework/Versions/A          cd“/ Users / manu / Documents / Workspace / Tennis Elbow Manager”          export CODESIGN_ALLOCATE = / Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin / codesign_allocate

     

签署身份:“Mac开发人员:”

     

/ usr / bin / codesign --force --sign --preserve-metadata = identifier,entitlements,resource-rules / Users / manu / Library / Developer / Xcode / DerivedData / Tennis_Elbow_Manager-ejjxrszvggswuwbqutndhmguwbxc / Build / Products / Debug / Tennis \ Elbow \ Manager.app/Contents/Frameworks/webp.framework/Versions/A

  

/ Users / manu / Library / Developer / Xcode / DerivedData / Tennis_Elbow_Manager-ejjxrszvggswuwbqutndhmguwbxc / Build / Products / Debug / Tennis Elbow Manager.app/Contents/Frameworks/webp.framework/Versions/A:代码对象未在所有       在子组件中:/ Users / manu / Library / Developer / Xcode / DerivedData / Tennis_Elbow_Manager-ejjxrszvggswuwbqutndhmguwbxc / Build / Products / Debug / Tennis Elbow Manager.app/Contents/Frameworks/webp.framework/Versions/A/webp       命令/ usr / bin / codesign失败,退出代码为1

包含webp.framework的SDL_image框架可以从这里下载:https://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.dmg

如果我从副本中删除了webp.framework,那么一切都是正确构建的,但是我的应用程序无法启动,因为它无法链接到webp。

我尝试将webp.framework复制到工作区而不是引用它,但它没有改变任何内容。

提前感谢任何能够解释这个神秘问题的人!

2 个答案:

答案 0 :(得分:3)

我通过自行签署 webp SDL2_image 框架找到了另一种解决方案:

  1. 导航至<FRAMEWORK_LOCATION>/SDL2_image.framework/Versions/A/Frameworks/webp.framework
  2. 删除Versions文件夹(代码签名会以其他方式投诉捆绑包格式)。
  3. 执行codesign -f -s - webp
  4. 导航至<FRAMEWORK_LOCATION>/SDL2_image.framework
  5. 执行codesign -f -s - SDL2_image

答案 1 :(得分:2)

好吧,我想我发现了什么错误:info.plist的可执行文件字段包含“FLAC”而不是“webp”,因此webp可能被视为应该自行签名的附加可执行文件。

要在提交到App Store之前验证签名,还需要添加“Bundle identifier”字段(例如“webp”)。

我没有尝试解决这个问题,因为我已经转移到另一个解决方案:在没有webp支持的情况下重新编译SDL_image。