文章

为 ipa 包重新签名



一个 ipa 包想安装到自己的手机上,如果所用的打包证书不包含你的设备 UDID,或者对方不是使用 In House 类型的企业级发布证书打出来的包,是无法正常安装的, 可以通过为 ipa 重签名,将包含自己设备 UDID 的证书打进 ipa 包来实现正常安装。


ipa 包重新签名步骤

下面以 qq.ipa 为例


1、解压 qq.ipa ,或在终端运行如下解压命令,进入 Payload 目录

1
unzip qq.ipa //命令行解压


2、将 Payload 目录中的 _CodeSignature 文件删除

1
rm -rf Payload/*.app/_CodeSignature/


3、将任意一个自己项目打出来的 ipa 包解压后找到 embedded.mobileprovision 文件,替换 qq.ipa 中的 embedded.mobileprovision 文件

1
cp embedded.mobileprovision Payload/*.app/embedded.mobileprovision


4、重新签名,“iPhone Distribution: XXXXXX”这个指的是自己的embedded.mobileprovision文件用到的签名证书名称,在 Xcode 或钥匙串中可以找到

1
/usr/bin/codesign -f -s "iPhone Distribution: XXXXXX" --resource-rules Payload/*.app/ResourceRules.plist Payload/*.app/


5、重新打包

1
2
zip -r qq.ipa Payload
/rm -rf Payload/


为了方便,有以下重新签名工具


Distribution 两种证书的区别

  • In House :不限设备数量
  • Ad Hoc :限制最多安装在100台设备上


原文

本文由作者按照 CC BY 4.0 进行授权