一:重簽之前的準備工作
1,查看本地所有的開發(fā)者證書
security find-identity -p codesigning -v
如:64E6016FAD61BC59D72012A7C2A88E143CD352DF "iPhone Developer: cheng long (2A64C579OG)"
第一部分是SHA-1如贷,即:安全散列算法-1,可以在keychain中雙擊對應(yīng)證書文件查看
第二部分是證書名稱
2,根據(jù)描述文件生成entitlements.plist囚痴,plist文件可以用來重簽
a)從描述文件中導(dǎo)出相關(guān)配置信息
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痴荐,重簽名執(zhí)行文件
/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