一:重签之前的准备工作
1,查看本地所有的开发者证书
security find-identity -p codesigning -v
如:64E6016FAD61BC59D72012A7C2A88E143CD352DF "iPhone Developer: cheng long (2A64C579OG)"
第一部分是SHA-1,即:安全散列算法-1,可以在keychain中双击对应证书文件查看
第二部分是证书名称
2,根据描述文件生成entitlements.plist,plist文件可以用来重签
a)从描述文件中导出相关配置信息
security cms -D -i xxx.mobileprovision > profile.plist
b)从profile.plist中打印Entitlements信息并重定向到entitlements.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' profile.plist > entitlements.plist
二:开始重签
1,解压ipa文件
2,把描述文件拷贝到xxx.app文件夹下
cp xxx.mobileprovision Payload/XX.app/embedded.mobileprovision
3,修改xxx.app文件夹下Info.plist中的Bundle Identifier与描述文件中的Bundle Identifier一致
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.XX.XX" Payload/XX.app/Info.plist
4,移除之前的签名文件夹
rm -rf Payload/XX.app/_CodeSignature
5,重签framework
/usr/bin/codesign --force --sign 84A4B9F1F902462CC33D01E9FF72C1BA04A97653 --entitlements entitlements.plist /Payload/xxx.app/Frameworks/*
或者:
/usr/bin/codesign -f -s "iPhone Distribution: xxx" --entitlements entitlements.plist Payload/xxx.app/Frameworks/*
6,重签名执行文件
/usr/bin/codesign --force --sign 84A4B9F1F902462CC33D01E9FF72C1BA04A97653 --entitlements entitlements.plist Payload/xxx.app/xxx
重签完成后可以通过下面命令查看签名信息:
codesign -vv -d Payload/xxx.app
注意:重签名有顺序,先framework和dylib,后XX.app/XX,顺序弄错了,就算签名成功也可能会安装失败!
7,打包
zip -qry xxx.ipa Payload