我有一个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
Run Code Online (Sandbox Code Playgroud)
我似乎无法辨别我的项目中的任何其他更改,因此我无法判断它是否与4.6.3更新或其他相关的问题.
我尝试重新启动Xcode,运行干净的构建,并清理构建文件夹.
我使用Cocoa在Xcode中构建了一个命令行实用程序(Foundation工具).该工具使用第三方框架.
在Xcode中一切正常,但我该如何部署这个程序?
如果我从Finder运行应用程序,它找不到库,因为它正在寻找../Frameworks/etc. 可以在第三方框架中静态链接吗?
首先,一点背景:我正在调查为什么我公司的MacOS/X应用程序(所有帐户似乎都正确签名;它在MacOS/X 10.11.x和10.12.x下正常运行; Gatekeeper在所有方面都很好用MacOS版本;"spctl --assess"和"codesign -vvvv"都表示满足其对所有操作系统版本的要求)但是当我尝试启动时,它不会在OS/X 10.10.x下启动 - 在10.10.x下它,我得到一个崩溃报告,其中dyld抱怨某些库未正确签名:
Dyld Error Message:
Library not loaded: @executable_path/../Frameworks/libcrypto.1.0.0.dylib
Referenced from: /Applications/MyApplication v123/MyApplication.app/Contents/MacOS/MyApplication
Reason: no suitable image found. Did find:
/Applications/MyApplication v123/MyApplication.app/Contents/MacOS/../Frameworks/libcrypto.1.0.0.dylib: code signature invalid for '/Applications/MyApplication v123/MyApplication.app/Contents/MacOS/../Frameworks/libcrypto.1.0.0.dylib'
Run Code Online (Sandbox Code Playgroud)
在调查这个问题时,我注意到.app/Contents/Framework中的库 - 都是使用完全相同的codesign命令签名的,通过运行OS/X 10.12的OS/X构建机器上的build/package脚本 - - 为它们计算不同类型的哈希值.
也就是说,如果我查看其中一个非Qt .dylib文件是如何签名的,我看到它只记录了一个sha256哈希:
sierrabuild-polaris:MyApp v123 autobuild$ codesign -vvvd ./MyApp.app/Contents/Frameworks/libsndfile.1.dylib
Executable=/Applications/MyApp v123/MyApp.app/Contents/Frameworks/libsndfile.1.dylib
Identifier=libsndfile.1
Format=Mach-O thin (x86_64)
CodeDirectory v=20200 size=4140 flags=0x0(none) hashes=125+2 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=b4256e9bf0fac567bb8ac86f56964c066b93d069
Hash choices=sha256 <----------------------------- ONLY 256!?
CDHash=b4256e9bf0fac567bb8ac86f56964c066b93d069
Signature size=8846
Authority=Developer ID Application: MyCompany
Authority=Developer ID …Run Code Online (Sandbox Code Playgroud)