iOS开发——ipa包重签

在iOS开发中,为了方便测试和内部体验,往需要对ipa使用企业证书重新签名,然后在内部进行分发。接下来,就介绍如何对ipa包进行重签。

简单重签

如果想要了解,iOS的证书及代码签名机制,可以阅读这篇文章代码签名探析,这里就不再介绍。
  首先,下载iReSign。这是一个开源工具,下载完成后打iReSign,选择要重签的ipa包和重签时使用的开发者证书,点击“重新签名”按钮,就会在原ipa包同目录下生成一个重签后的ipa包。


  使用iTunes安装重签后的ipa包,这时在iOS8以下的系统可以正常安装,但iOS8及以上系统就会安装失败。这是由于苹果在iOS8.1.3系统以后加强了对ipa安装包签名的验证,主要区别在于ipa唯一标识在原有Bundle Identifier的基础上增加了证书ID,也就说安装包和手机上已安装APP的Bundle Identifier即使一致,如果两者签名的证书ID不相同,那么安装包也无法正常安装。

完整重签

  1. 首先使用重签时用的开发者证书创建一个App ID,bundleID随意。


    iOS开发——ipa包重签_第2张图片
    iReSign_identifiers.png
  2. 为上一步创建的App ID创建一个Provisioning Profile并下载到本地(可以通过Xcode来完成)


    iOS开发——ipa包重签_第3张图片
    iReSign_provisioning_profile.png
  3. 创建Entitlements Plist。




    application-identifier
    PREFIX.yourappBundleID
    aps-environment
    production
    get-task-allow

    keychain-access-groups

    PREFIX.yourappBundleID


新建一个plist文件,将上面代码粘贴过去。将其中的PREFIX.yourappBundleID替换成前第1步截图中的PrefixID,然后将文件保存为entitlements.plist。该文件中内容配置可以参考代码签名探析,比如没有推送功能的话,就去掉如下两行:

    aps-environment
        production
最后,打开iReSign
  • 第一行填待重签ipa包的路径
  • 第二行填第2步中下载的Provisioning Profile的路径
  • 第三行填第3步创建的entitlements.plist文件路径
  • 第四行勾选修改ID,然后填写第1步中的bundle ID。
  • 第五行选择重签使用的开发者证书
  • 点击重新签名,大功告成!

重新签名的ipa包将会存放在原ipa包同一目录。

你可能感兴趣的:(iOS开发——ipa包重签)