使用iResign重签ipa

432 阅读2分钟

当我们使用app store或者其他来源得到的ipa,特别是一个app store的ipa,如果想安装到自己的手机上,是不能直接安装的。有时候我们想用企业证书测试分发一个已经上架app store的ipa,不修改bundle id是不能直接安装的。这个时候就需要重签名。我遇到情况是,公司的app已经上架app store,这个时候公司需要改账号,变成企业账号,如果直接换过去,那很多第三方的统计、推送都需要重新上传证书,修改bundle id。很费时间,也不划算。所以这个时候需要用到重签名。 亲测,mac系统10.12.4,手机ios10.3.2。 iResign下载地址:github.com/maciekish/i… 下载之后直接使用软件,打开之后:

E50961D9-7096-41F6-AFFE-A22381E4DC3A.png

经过测试,在新系统里面,这些都需要填写。 其中mobileprovision地址就是开发者平时开发的时候申请的描述文件。配套的证书也都需要保存在钥匙串里面去。

iReSign_identifiers.png
需要的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>

记住这里的application-identifierkeychain-access-groups,使用的就是上面图片中开发者注册证书的时候显示的Prefix和ID的组合。这些都是不能错的,也不能省略。否则重签名不成功。 如果你申请的证书没有推送功能,删除

    <string>production</string>

这两行,本人在弄的时候就是因为这两句没有删除,不能安装到手机上。 最后选择描述文件所对应的证书。