昨天在和其他同事研究自動打包時,發現能夠將 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 包的結果如下圖
Snip20170520_1.png
上圖顯示,重新簽名能夠修改 ipa 包的 bundle id。另外 65M 的 ipa 包重新簽名花大約 1分20秒。能否用 fastlane 完成自動打包,答案是百分之百(雖然沒有用它完成打包),如下圖,fastlane action action 有重新簽名,fastlane 官網。
Snip20170520_2.png
不足之處,請指正,感恩!