XCode 6.1.1 无法协同设计:"code object is not signed at all" 只有 1 个框架

XCode 6.1.1 cannot codesign : "code object is not signed at all" with only 1 framework

我正在尝试在 OSX 10.9.5 和 XCode 6.1.1 上使用 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

Signing Identity: "Mac Developer: "

/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: code object is not signed at all In subcomponent: /Users/manu/Library/Developer/Xcode/DerivedData/Tennis_Elbow_Manager-ejjxrszvggswuwbqutndhmguwbxc/Build/Products/Debug/Tennis Elbow Manager.app/Contents/Frameworks/webp.framework/Versions/A/webp Command /usr/bin/codesign failed with exit code 1

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

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

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

提前感谢任何可以阐明这个神秘问题的人!

好的,我想我发现了什么问题:info.plist 的可执行文件字段包含 "FLAC" 而不是 "webp",因此 webp 可能被视为一个额外的可执行文件应该自己签。

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

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

我通过自签名 webpSDL2_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.