1、签名指令

对.app包进行签名
$ codesign -fs 证书ID —entitlements entitlements.plist xxx.app
对.app包内部的动态库、AppExtension等进行签名
$ codesign -fs 证书ID xxx.dylib

2、重签名步骤

第一步:查看可用的证书

$ security find-identity -v -p codesigning

  1. 1) 833AB1A5FC837D8D7ADB6D81A9A0EAC3EE897DB6 "Apple Development: xxx (70SX5888C3)"
  2. 2) D646018260551771F161EAE5E5C98F2F8BD3C018 "Apple Development: xxx (60F7LJ3699)"
  3. 3) 21F086108036249F734ED29537C51EB1862233D4 "Apple Development: xxx (AB467AU4CN)"
  4. 3 valid identities found

前面较长的字符串就是证书ID

第二步:获取.mobileprovision文件

必须是付费证书产生的,appid、device一定要匹配,并放入.app包中。可以通过Xcode自动生成,然后在编译后的.app包中找到:
截屏2022-06-07 22.22.37.png
或者去开发者网站生成下载证书。

embedded.mobileprovision是固定命名规则

第三步:提取entitlements.plist

先生成temp.plist文件
$ security cms -D -i embedded.mobileprovision > temp.plist
再获取entitlements.plist文件
$ /usr/libexec/PlistBuddy -x -c ‘Print :Entitlements’ temp.plist > entitlements.plist

第四步:重签名

$ codesign -fs 21F086108036249F734ED29537C51EB1862233D4 —entitlements entitlements.plist iOSTest.app