昨天在和其他同事研究自动打包时,发现能够将 ipa 包重新进行签名。what's hell? how to achieve that? 带着一系列问题,一步步终于把功能实现。避免以后忘记和分享的精神,写了此篇文章。
一、旧版本的 ipa 包重新签名
ios app 开发中ipa重新签名步骤介绍-备中介绍打包的五个步骤:
- 步骤1 :
unzip YourApp.ipa - 步骤2:
rm -rf Payload/YourApp.app/_CodeSignature - 步骤3:
cp InHouse.mobileprovision Payload/YourApp.app/embedded.mobileprovision - 步骤4:
/usr/bin/codesign -f -s "iPhone Distribution: YourCompanyName" --resource-rules Payload/YourApp.app/ResourceRules.plist Payload/YourApp.app - 步骤5:
zip -r YourApp_inhouse.ipa Payload
是不是很 easy ? 但是照着提示的步骤来做,做到步骤 4 就会出问题。提示
warning: --resource-rules has been deprecated in Mac OS X >= 10.10!
于是乎旧版本的 ipa 包重新签名被放弃。
二、新版本的 ipa 包重新签名
mac用终端对ipa包重新签名,里面讲述 ipa 包重新签名五个步骤:
- 1、在终端输入sigh resign,回车
- 2、把要签名的 ipa 文件拖到窗口上,回车
- 3、填写用来签名的证书,回车
- 4、把项目的配置文件.mobileprovision文件拖到窗口上,回车
- 5、好了,resign脚本会自动更改bundel id,签名并重新打包。
总之,通过 sigh 脚本,通过重新配置 ipa 包的 .mobileprovision文件 和 team。按照上面的做法,是能生成 ipa 包的。但是如何判断 ipa 包是重新签名的呢?另外用上面的操作,能修改 ipa 的bundle id 吗?重新签名大 ipa 包要花多少时间?fastlane 能不能进行重新签名?
三、升级版本 ipa 包重新签名
ipa 包重新签名是参照的上面 新版本的 ipa 包重新签名。如何查看 ipa 中 bundle id 和 签名信息呢?用如下两个命令。
#1. 先解压 ipa 包
unzip your.ipa
#2. 读取 ipa 包内容
codesign -vv -d your.app
读取 ipa 包的结果如下图
上图显示,重新签名能够修改 ipa 包的 bundle id。另外 65M 的 ipa 包重新签名花大约 1分20秒。能否用 fastlane 完成自动打包,答案是百分之百(虽然没有用它完成打包),如下图,fastlane action action 有重新签名,fastlane 官网。
Snip20170520_2.png
不足之处,请指正,感恩!
网友评论