拾遗iOS开发-项目工具

iOS开发——ipa包重签

2016-03-17  本文已影响5496人  zagger

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

简单重签

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

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

完整重签

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


    iReSign_identifiers.png
  2. 为上一步创建的App ID创建一个Provisioning Profile并下载到本地(可以通过Xcode来完成)


    iReSign_provisioning_profile.png
  3. 创建Entitlements Plist。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>application-identifier</key>
    <string>PREFIX.yourappBundleID</string>
    <key>aps-environment</key>
    <string>production</string>
    <key>get-task-allow</key>
    <false/>
    <key>keychain-access-groups</key>
    <array>
    <string>PREFIX.yourappBundleID</string>
    </array>
    </dict>
    </plist>

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

    <key>aps-environment</key>
        <string>production</string>
最后,打开iReSign
QQ20160317-0@2x.png

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

上一篇 下一篇

猜你喜欢

热点阅读