xcodebuild:code signature invalid

MH_EXECUTE、LC_LOAD_DYLIB等类型二进制文件必须签名才能使用。重签名操作涉及两个命令行工具:codesign和security。

macOS上安装的Apple开发者证书过期后,运行一工具,提示:code signature invalid。MH_EXECUTE、LC_LOAD_DYLIB等类型二进制文件必须签名才能使用,此时需要重签。重签名操作涉及两个命令行工具:codesign和security。以动态库名称为libEaseapi.dylib说明操作步骤:

security

security是macOS系统访问keychain和安全组件的命令行工具,钥匙串访问(Keychain Access)App实际上就是调用的security命令。通过man security查看security的具体用法。在本例中我们需要列出本机上可用的证书。

security find-identity -v -p codesigning
  1) HOUD0W9JZ7TZ9KLUXI18Y69U37GAH6GXJFVK21XF "Apple Development: Easeapi Com (C7LAUUEPVY)"
     1 valid identities found
//-p:指定用途查找;
//-v:仅显示可用的;

codesign

macOS的签名工具。部分可用参数:

-s:签名;
-f:强制操作,将替换掉原有签名;
-d:显示签名信息;
-v:verbose,v越多信息越多;
-i:修改bundle id;
…

查看签名信息

codesign  -d -vv libEaseapi.dylib
libEaseapi.dylib: CSSMERR_TP_CERT_REVOKED
In architecture: x86_64

提示证书已经是撤销状态,需要重新签名。

重新签名

codesign -f -s 'Apple Development: Easeapi Com (C7LAUUEPVY)' libEaseapi.dylib
//或
codesign -f -s 'HOUD0W9JZ7TZ9KLUXI18Y69U37GAH6GXJFVK21XF' libEaseapi.dylib

odesign -vv libEaseapi.dylib
libEaseapi.dylib: valid on disk
libEaseapi.dylib: satisfies its Designated Requirement

重签名之后,libEaseapi.dylib即可重新使用。

其它文章

CocoaPods Podfile and podspec configurations
bitcode ITMS-90562: Invalid Bundle
iOS安全:LC_LOAD_DYLIB和LC_ID_DYLIB