2

在 macOS 系统上,我遇到动态链接错误 - DYLD,[0x5] 代码签名错误 - 在我自己的系统(Catalina 和 Mojave)以外的系统上启动应用程序时。为什么我的系统工作正常不清楚?我的 dylib 是从我的应用程序包的 Frameworks 文件夹中加载的。我可以验证库使用的@rpaths 是否正常工作。同样,这些库在我的系统上加载良好。

我可以成功公证我的应用程序。公证工具和日志不会报告任何错误或警告。无法在崩溃报告中加载的库确实存在于报告的路径中。我可以运行“spctl -a -t exec -vv MyFineApp.app”并且该工具没有报告任何错误。它说捆绑被接受。有什么想法可以更好地诊断为什么应用程序在我的计算机上运行而不是在其他计算机上运行的问题?同样,报告是代码签名无效,但从未在其他地方报告过。该库的代码签名如下。

Executable=/Users/user/Library/Developer/Xcode/DerivedData/MyFineApp-fbtnvajmowfagrgjpeckdwwjzlid/Build/Products/Debug/MyFineApp.app/Contents/Frameworks/libavcodec.dylib
Identifier=libavcodec
Format=Mach-O thin (x86_64)
CodeDirectory v=20500 size=114006 flags=0x10000(runtime) hashes=3554+5 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=XXXXXXXX
CandidateCDHashFull sha256=XXXXXXXX
Hash choices=sha256
CMSDigest=ec6e734956d23494d115f6fa608f6d15a621a944a6d8b4210134b664b71523af
CMSDigestType=2
CDHash=XXXXXXXXX
Signature size=8933
Authority=Developer ID Application: Fake Name (XXXXXXX)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Apr 12, 2020 at 1:15:16 PM
Info.plist=not bound
TeamIdentifier=MYTEAM
Runtime Version=10.13.0
Sealed Resources=none
Internal requirements count=1 size=204

崩溃报告

终止原因:DYLD,[0x5] 代码签名

应用程序特定信息:dyld:启动、加载依赖库

Dyld 错误消息:库未加载:@rpath/libavcodec.dylib 引用自:/Applications/MyFineApp.app/Contents/MacOS/MyFineApp 原因:找不到合适的图像。确实发现:/Applications/MyFineApp.app/Contents/MacOS/../Frameworks/libavcodec.dylib:代码签名对“/Applications/MyFineApp.app/Contents/MacOS/../Frameworks/libavcodec.dylib”无效

/Applications/MyFineApp.app/Contents/MacOS/../Frameworks/libavcodec.dylib: stat() failed with errno=1
4

1 回答 1

1

我在 Apple DTS 的帮助下解决了我的问题。我在其他代码签名标志中设置了 -deep 标志。这个嵌入到我的 dylib 中的权利导致了看门人系统的问题。不要做 --deep 除非你知道你在做什么!!!

见下文:

请参阅“<code>--deep 被认为有害”。

https://forums.developer.apple.com/thread/129980

https://forums.developer.apple.com/thread/128166

于 2020-04-14T16:23:56.417 回答