尝试在另一台计算机上运行应用程序发布版本时失败,并出现"code signature invalid"错误



编译了我的应用程序的发行版本,并将捆绑包复制到另一台计算机进行测试。与此崩溃:

Dyld Error Message:
  Library not loaded: @rpath/libxxx.dylib
  Referenced from: /Users/USER/Downloads/*/ndncon.app/Contents/MacOS/ndncon
  Reason: no suitable image found.  Did find:
    /Users/remap/Downloads/ndncon2-testing/ndncon.app/Contents/MacOS/../Frameworks/libxxx.dylib: code signature invalid for '/Users/remap/Downloads/ndncon2-testing/ndncon.app/Contents/MacOS/../Frameworks/libxxx.dylib'

我进行了验证:

$ codesign -vv --deep-verify /Users/remap/Downloads/ndncon2-testing/ndncon.app 
/Users/remap/Downloads/ndncon2-testing/ndncon.app: valid on disk
/Users/remap/Downloads/ndncon2-testing/ndncon.app: satisfies its Designated Requirement

$ codesign -dvv /Users/remap/Downloads/ndncon2-testing/ndncon.app 
Executable=/Users/remap/Downloads/ndncon2-testing/ndncon.app/Contents/MacOS/ndncon
Identifier=ucla.edu.ndncon
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=8819 flags=0x0(none) hashes=434+3 location=embedded
Signature size=4688
Authority=Mac Developer: g....n@gmail.com (H79XXXX834)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=Dec 1, 2016, 12:51:19 PM
Info.plist entries=26
TeamIdentifier=XXXXXXXXX
Sealed Resources version=2 rules=12 files=44
Internal requirements count=1 size=180

最后,

$ sudo spctl --assess -v /Users/remap/Downloads/ndncon2-testing/ndncon.app 
/Users/remap/Downloads/ndncon2-testing/ndncon.app: accepted
override=security disabled

不确定为什么要抱怨1)内部动态库和2)为什么它完全抱怨?

过去几天我们一直在处理这个问题,最后弄清楚了这个问题。尽管您在问题中没有提及它,但我强烈怀疑您是否在OS X Yosemite 10.10.5

上遇到了这一点。

问题是,您[很可能]需要在Yosemite上的代码签名中具有SHA1哈希,而您只有SHA256哈希。CodeSign实用程序检查二进制的部署目标[LC_VERSION_MIN_MACOSX]检测是否需要包括SHA1或SHA256并适当签名。无论出于何种原因,优胜美地上的" codesign -vv"显然是错误地报告有效的签名。

of Note-这不是OS X的较早版本的问题,因为库签名直到YoSemite才验证。

相关内容

最新更新