重签一般有两种,一种是改bundle ID,一种是不改bundle ID,bundle ID的重要性大家都这道,而且轻易不能改动,所以我这里只写不改bundle ID的方法。
准备工作
首先你得有个苹果开发者证书
然后准备一个mobileprovision描述文件,可以在你的https://developer.apple.com/account/ios/certificate/上创建和下载
或者从Xcode中导出。
将准备好的xxx.mobileprovision文件重名为embedded.mobileprovision。
生成 entitlements.plist 文件
- 使用iReSign对进行重签名,然后将重签名后的包进行解压,得到entitlements.plist文件
- 通过mobileprovision文件生成:
首先生成一个完整的plist文件
security cms -D -i embedded.mobileprovision > embedded.plist
我们实际上需要的是中间红线框的那部分,接下来执行
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' embedded.plist > entitlements.plist
重签名
一切准备就绪,接下来开始进行签名操作了
- 解压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就是你重签的包了,名字可以随便起。
注意:企业包签名的话ipa