iOS證書學習推薦博客代碼簽名探析搏色,本文重點在于介紹ios8.1.3系統(tǒng)ipa包重簽名(如企業(yè)證書)無法安裝的問題善茎。蘋果在iOS8.1.3系統(tǒng)以后加強了對ipa安裝包簽名的驗證,主要區(qū)別在于ipa唯一標識在原有Bundle Identifier的基礎(chǔ)上增加了證書ID频轿,也就說安裝包和手機上已安裝APP的Bundle Identifier即使一致垂涯,如果兩者簽名的證書ID不相同,那么安裝包也無法正常安裝航邢。證書ID是什么耕赘?
圖中方框里字符串就是證書ID,升級后的ipa標識就是證書ID+BundleID膳殷,只有兩者完全匹配操骡,安裝包才能覆蓋安裝,否則就會提示安裝失敗赚窃。解決辦法就是卸載安裝包册招,重新安裝!
The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile
目前勒极,重簽名主要用于企業(yè)證書重簽名個人證書發(fā)布的ipa包是掰,包括各種助手及企業(yè)內(nèi)測包的發(fā)布等。在重簽名前辱匿,讓我們先看看一個完整的ipa包有哪些與證書相關(guān)的東西键痛!打開ipa包,會發(fā)現(xiàn)_CodeSignature和embedded.mobileprovision兩個文件
_CodeSignature匾七,ipa包簽名文件
embedded.mobileprovision絮短,證書配置文件
因此,替換上面兩個文件就解決了ipa重簽名的主要問題昨忆。此外丁频,代碼簽名探析文中還提到entitlements.plist授權(quán)文件,重簽名時也需要處理邑贴。按照下圖內(nèi)容創(chuàng)建plist文件限府,輸入相關(guān)信息。
整個簽名過程如下(文件路徑自定義)
- S1. 解壓ipa安裝包
cp olinone.ipa olinone.zip
- S2. 替換證書配置文件(文件名必須為embedded痢缎,不得自定義)
cp embedded.mobileprovision Payload/olinone.app
- S3. 重簽名(certifierName為重簽名證書文件名胁勺,可以加證書ID后綴)
certifierName="#你的Distribution證書名稱#"
codesign -f -s $certifierName --entitlements entitlements.plist Payload/olinone.app
- S4. 打包
zip -r olinone.ipa Payload
很多人在重簽名時會忽略第二步或者沒有指定entitlements.plist,都會造成ipa包安裝失敹揽酢署穗!