IPA 重新签名
1、需求:
- 非企业证书签名的
ipa
想要在企业内分发。 - 对商店中下载的应用砸壳并修改内容后,希望重新打包并安装到手机上;
这些都需要对ipa
重新签名~
2、原理
移除原有签名,通过codesign
工具对原 ipa 使用新证书重新签名并得到新的安装包。
1 |
|
3、流程
3.1.准备工作:
- 解压ipa
1 |
|
- 找到开发者证书
证书可以在钥匙串中查找,也可以通过下面的命令行来查找:
1 |
|
- 找到开发环境配置文件并复制到
xx.app
文件夹下
如果是自己的 ipa 那么这个.mobileprovision
文件可以直接使用现成的,从Xcode->账户
中找到,show in finder 后复制一份重命名为embedded.mobileprovision
,拖到.app
文件夹下即可
也可以使用命令行操作:
1 |
|
注意:复制到xx.app
目录下的配置文件一定要命名为embedded.mobileprovision
!
- 修改包的 Bundle Identifier
如果是别人的 ipa 那么就要需要修改原安装包的info.plist
中的Bundle identifier
,使其与配置文件中的Bundle Identifier
保持一致:
1 |
|
- 生成新的 entitlements.plist
Entitlements 是应用功能和授权相关的文件,涉及到iCloud、推送等功能的配置信息。可以通过开发环境配置文件重新生成一份,后面签名要用到:
1 |
|
上面会生成一个完整的 plist,我们只需要里面的Entitlements
字段,执行命令行:
1 |
|
结果如下:
- 移除之前的签名文件夹:
1 |
|
3.2.重新签名:
重新签名有顺序,先把framework
和dylib
签名,最后再签名xx.app/xx
,顺序弄错了,就算签名成功也可能会安装失败!
- 重新签名framework:
1 |
|
- 重新签名应用的执行文件
1 |
|
- 查看应用签名信息
1 |
|
3.3.调试
1 |
|
出现success
字样,就说明成功了~
如果遇到错误提示:“Error: There was an internal API error. AMDeviceSecureInstallApplication(0, device, url, options, install_callback, 0)”,就可能存在有 framework 或者 dylib 未签名的情况。这时就需要把 app 文件夹下的 framework 全都签名。
重新打包,生成新的ipa
1 |
|
接下来就可以通过 iTunes 或第三方工具安装到手机了~
相关参考:
#©传送门