映射文件没有团队 ID,也不是平台二进制文件

Jon*_*rin 6 macos codesign ios

注意:这个问题看起来很相似,但又有所不同。这里的错误是关于没有团队 ID 的文件,而链接的答案是关于对根本没有签名的文件进行临时签名。那里的答案(解释如何临时签名)并不能解决这里的问题。

尝试运行链接到动态库的可执行文件,出现以下错误:

Library not loaded:
[...]
Reason: tried:
    <lib> not valid for use in process: mapped file has no Team ID and is not a 
    platform binary (signed with custom identity or adhoc?))
Run Code Online (Sandbox Code Playgroud)

如何检查签名并修复它?

Jon*_*rin 7

使用以下命令检查文件的签名:

% codesign -d -v ./mavsdk
Run Code Online (Sandbox Code Playgroud)

例如,它可能会显示(特别注意Signature=adhoc):

Executable=<path/to/lib>
Identifier=some.package.name
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20400 size=253962 flags=0x2(adhoc) hashes=7930+3 location=embedded
Signature=adhoc
Info.plist entries=11
TeamIdentifier=not set
Sealed Resources version=2 rules=13 files=13
Internal requirements count=0 size=12
Run Code Online (Sandbox Code Playgroud)

为了签署库,首先列出您的身份:

% security find-identity -v -p codesigning
Run Code Online (Sandbox Code Playgroud)

它可能会显示如下内容:

% codesign -d -v ./mavsdk
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以使用以下方式签署库:

% codesign -s "Apple Development: Your Name (234MBK19TS)" <lib>
Run Code Online (Sandbox Code Playgroud)