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