重簽一般有兩種,一種是改bundle ID,一種是不改bundle ID,bundle ID的重要性大家都這道,而且輕易不能改動,所以我這里只寫不改bundle ID的方法。
準(zhǔn)備工作
首先你得有個蘋果開發(fā)者證書
然后準(zhǔn)備一個mobileprovision描述文件,可以在你的https://developer.apple.com/account/ios/certificate/上創(chuàng)建和下載
或者從Xcode中導(dǎo)出。
將準(zhǔn)備好的xxx.mobileprovision文件重名為embedded.mobileprovision。
生成 entitlements.plist 文件
- 使用iReSign對進(jìn)行重簽名,然后將重簽名后的包進(jìn)行解壓,得到entitlements.plist文件
- 通過mobileprovision文件生成:
首先生成一個完整的plist文件
security cms -D -i embedded.mobileprovision > embedded.plist

iamge.png
我們實際上需要的是中間紅線框的那部分,接下來執(zhí)行
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' embedded.plist > entitlements.plist
重簽名
一切準(zhǔn)備就緒,接下來開始進(jìn)行簽名操作了
- 解壓ipa包(xxx.ipa為你的需要重簽名的包)
unzip xxx.ipa
- 刪除簽名文件
rm -rf Payload/xxx.app/_CodeSignature/
- 替換配置文件
cp embedded.mobileprovision Payload/xxx.app/
- 簽名
codesign -f -s "你的證書的名稱" --entitlements entitlements.plist Payload/xxx.app
tip:證書的名稱你可以通過mac自帶的keychain Access鑰匙串訪問程序查看電腦上的證書。
- 打包
zip -r resign_xxx.ipa Payload/
tip:resign_xxx.ipa就是你重簽的包了,名字可以隨便起。
注意:企業(yè)包簽名的話ipa