1.准备好证书、描述文件双击,解压xx.ipa 得到Payload文件,放到一个新建文件夹方便操作,cd 到新建文件目录下。
2.查看证书
security find-identity -p codesigning -v
3.生成entitlements.plist ,替换描述文件
security cms -D -i xx.mobileprovision > profile.plist
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' profile.plist > entitlements.plist
cp xx.mobileprovision Payload/xx.app/embedded.mobileprovison
4.修改bundleid
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.xx" Payload/xx.app/Info.plist
5.删除_Codesignature
rm -rf Payload/xx.app/_Codesignature
6.签名,-s后面的xxx就是第2步里看到最长的一串证书名.先把Frameworks文件下的所有framework和dylib文件全部签名,再签名.app,不要先签名app后framework。
codesign -fs xxx --entitlements entitlements.plist Payload/xx.app/Frameworks/xxx.framework
codesign -fs xxx --entitlements entitlements.plist Payload/xx.app/Frameworks/xxx.dylib
codesign -fs xxx --entitlements entitlements.plist Payload/xx.app
7.查看签名信息
codesign -vv -d Payload/XX.app
8.调试安装,出现异常请安装ios-deploy,出现Error 0xe8000067因为framework动态库没有签名或漏签。
ios-deploy -d -b Payload/XX.app
9.打包
zip -qry xxx.ipa Payload
rm -rf Payload/