在 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)
Copyright ©2020—2026 All Rights Reserved.