什么是 IPA 重签名?把一个应用换成自己的证书要几步

在 iOS 分发这个圈子里,”重签名”是个高频词。很多人知道应用打不开了要”重新签”,但并不清楚这一步到底做了什么。理解重签名的原理,能帮你判断什么时候能救、什么时候救不了。

IPA 文件里有什么

IPA 是 iOS 应用的安装包文件格式,本质上是一个压缩包。把后缀改成 zip 解开,里面主要是一个 Payload 文件夹,装着真正的应用程序包(.app)。

这个 .app 包里,除了应用的代码和资源文件,还包含两个和签名直接相关的东西:

  • 可执行文件的签名信息:苹果要求应用里的每个可执行代码都必须有有效签名,否则 iOS 根本不允许运行。
  • 描述文件(embedded.mobileprovision):相当于一张”通行证”,里面记录了这张证书允许哪些设备、允许哪些权限、有效期到什么时候。

重签名做了什么

重签名,说白了就是把上面这两样东西换成你自己的:

  • 删掉原来的签名和描述文件;
  • 把新的描述文件放进去;
  • 用你的证书,对应用里的可执行文件、动态库、插件等所有需要签名的部分重新签一遍;
  • 重新打包成 IPA,然后分发。

整个过程不需要应用的源代码,这是重签名最大的价值:你拿到一个已经编译好的 IPA,只要手上有对应的证书,就能把它重新签成”你的”。这也是为什么应用掉签之后,只要原来的 IPA 还在,通常几小时内就能恢复分发。

需要准备什么

要做一次重签名,你需要三样东西:

  • 原始 IPA 文件:这是基础,没有它什么都做不了。所以自己开发的应用一定要留好每一版的 IPA 归档。
  • 可用的证书和描述文件:企业签名用企业开发者账号的 In-House 证书,超级签名用个人/公司账号的 Ad Hoc 证书,TF 签名(TestFlight,苹果官方的测试分发通道)则走苹果后台上传。
  • 签名工具:命令行可以用苹果自带的 codesign,图形化工具有不少第三方选择,批量分发一般会写成脚本自动化。

哪些情况签不了

重签名不是万能的,有几种情况会卡住:

  • 应用加了壳或做了完整性校验:有些应用会检测自己的签名是否被改动,一旦发现不一致就闪退。这类应用在重签名后需要额外处理,不是简单换证书就能跑。
  • IPA 里带了不匹配的权限:比如原来的描述文件里有推送、iCloud、钥匙串共享等权限,而你的新证书不支持这些权限,签名会失败,或者装上之后功能异常。
  • 应用里嵌套了扩展或 Watch 应用:主应用、插件、扩展每一个都要单独签,漏一个就装不上或闪退。这是批量签名最容易出错的地方。
  • IPA 本身损坏或不完整:从第三方渠道拿到的包,有时候是残缺的,这种只能找原开发者要完整包。

一个容易被忽略的细节

重签名之后,应用的”身份”就变了。对 iOS 系统来说,这是一个全新的应用,和之前装的那个不是同一个。这也解释了为什么重签之后重新安装,有时候会出现”两个图标”或者数据读不到旧版本的情况——因为系统的 App ID 变了。

如果你的应用有本地数据需要保留,重签之前一定要先想清楚数据迁移的方案,别等用户装上了才发现聊天记录、存档全没了。


我是本期作者小思,想解决苹果企业签名、超级签名、TF签名问题?可以在微信公众号对话框找到我哦~(QQ:822404920 微信:A-mk5888)

打赏
超级签按设备收费、企业签按时间收费,到底哪种更划算?
上一篇
一个签名能装多少台设备?设备上限的真实规则
下一篇

发表评论

注册不是必须的

栏目导航

iOS 签名 · 1 对 1

企业签 / 超级签 / TF 签

微信 A-mk5888在线接单
生成中...
QR code title