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。
我通过自签名 webp 和 SDL2_image 框架找到了另一个解决方案:
- 导航至
<FRAMEWORK_LOCATION>/SDL2_image.framework/Versions/A/Frameworks/webp.framework
。
- 删除
Versions
文件夹(否则代码设计会抱怨包格式)。
- 执行
codesign -f -s - webp
.
- 导航到
<FRAMEWORK_LOCATION>/SDL2_image.framework
。
- 执行
codesign -f -s - SDL2_image
.
我正在尝试在 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。
我通过自签名 webp 和 SDL2_image 框架找到了另一个解决方案:
- 导航至
<FRAMEWORK_LOCATION>/SDL2_image.framework/Versions/A/Frameworks/webp.framework
。 - 删除
Versions
文件夹(否则代码设计会抱怨包格式)。 - 执行
codesign -f -s - webp
. - 导航到
<FRAMEWORK_LOCATION>/SDL2_image.framework
。 - 执行
codesign -f -s - SDL2_image
.