iOS应用签名-重签名

iOS应用重签名

什么是重签名?

作为iOS开发,经常遇到添加UDID的情况。但是大项目往往编译打包时间很长,浪费太多时间,这时候进行应用重签名可以解决这个问题。

重签名就是修改应用的证书及描述文件,再重新签名生成新的包。

使用场景:

  • 添加UDID、修改名称、版本号等
  • 第三方App签名安装,如手机安装多个微信

如何重签名?

支持签名的源文件有3种:ipa、app、xcarchive

苹果打包可分为两种安装包

  • 开发调试包,(develop、adhoc)
  • AppStore上架包,(distribution)

重签名工具推荐:
官方介绍: http://dantheman827.github.io/ios-app-signer/
github地址:https://github.com/DanTheMan827/ios-app-signer

重签名过程

简单方式:

  1. 找一个自己打包的ipa包,解压找到embedded.mobileprovision文件,替换需要重签名的应用包相应文件。
// 方式一:命令行方式
unzip xxxx.ipa

// 方式二:ipa后缀改成zip,解压工具解压
  1. 钥匙串找到自己签名文件对应的证书,复制名称如:
iPhone Distribution: xxxxx science & technology co.,ltd (4YN495XXXX)
  1. 命令行进入需要签名包的文件目录下,执行签名替换
codesign -f -s "iPhone Distribution: xxxxx science & technology co.,ltd (4YN495XXXX)" Payload/TBXPreReaders.app

成功提示:replacing existing signature,就是在Payload/TBXPreReaders.app下替换新的_CodeSignature文件夹。

如果有entitlements.plist,需要带上参数:

--entitlements "entitlements.plist"
  1. 命令行对Payload重新打包
zip -r newxxxx.ipa Payload

可能用到的有用的命令

查看app信息

codesign -vv -d Payload/TBXPreReaders.app

查看描述文件信息

security cms -D -i Payload/TBXPreReaders.app/embedded.mobileprovision

参考资源:

1. iOS App 签名的原理
2. iOS重签名工具
3. iOS重签名工具学习介绍
4. iOS重签名脚本