前言
关于签名有好多方法,这里介绍两种常用的重签名方法,手动签名和Xcode签名,为了方便讲解,在这里就全程用微信进行举例吧。
准备工作
砸过壳的ipa
包,没有可以去各种助手上越狱应用区下载一个,例如去PP助手下载一个越狱版本的微信
手动签名
1.获取embedded.mobileprovision描述文件
新建一个工程,真机编译,获取Products文件夹下app文件中的embedded.mobileprovision描述文件
例如:新建一个叫WeChat的Demo项目,真机编译,然后选择WeChat.app
Show in Finder,显示包内容,获取里面的
embedded.mobileprovision
描述文件
2.生成entitlements.plist文件
通过以上生成的描述文件,执行以下两行命令,生成entitlements.plist
,此文件是给app
包签名的文件
security cms -D -i embedded.mobileprovision > profile.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' profile.plist > entitlements.plist
3.调整IPA包
解压ipa包,获取Payload文件夹下的app文件,删掉app
文件中的PlugIns(
拓展文件夹)和Watch
文件夹,
因为拓展文件夹和Watch签名对其不生效,所以删除
4.签名Frameworks
首先先查看电脑上安装的证书,选择创建工程时候使用的证书进行签名
security find-identity -p codesigning -v
cd到Frameworks
文件夹下,把所有的framework
挨个进行签名,命令为:
codesign -fs "xxxx” xxx.framework
例如:
codesign -fs "iPhone Developer: 1234567890@qq.com (ABCDEFGHIGK)" WCDB.framework
5.给app中的可执行文件赋权限
例如给微信赋权限:
chmod +x WeChat
6.替换Bundle Identifier(可省略)
复制项目的Bundle Identifier ID替换app
中Info.plist
文件的Bundle Identifier ID,然后保存即可
7.签名app文件
codesign -f -s xxxx --no-strict --entitlements=entitlements.plist xxx.app
例如签名微信:
codesign -f -s "iPhone Developer: 1234567890@qq.com (ABCDEFGHIGK)" --no-strict --entitlements=entitlements.plist WeChat.app
8.打包成ipa文件
新建一个Payload
文件夹,然后把WeChat.app
文件放进去,然后终端执行命令打包
例如打包微信:
zip -r WeChat.ipa Payload
9.利用xcode安装到手机上
打开Xcode command + shift + 2
进行安装