重簽名:可以讓用個(gè)人開發(fā)者賬號(hào)打出來(lái)的包翅萤,不用上架Appstore即可將其安裝到所有未越獄的iOS設(shè)備上(前提條件是你得有一個(gè)企業(yè)證書(需要證書或簽名的可以加扣:425374542))恐疲。
風(fēng)險(xiǎn)提示:這種重簽名方法僅供個(gè)人有興趣的開發(fā)者去玩玩,不提倡用于商用断序,提倡使用Appstore上傳發(fā)布到你的應(yīng)用流纹,重簽名只能算是黑科技,蘋果所不提倡的東西违诗,如果APP使用量過(guò)大的話漱凝,企業(yè)證書有被封停的風(fēng)險(xiǎn)。
蘋果在iOS8.1.3系統(tǒng)以后加強(qiáng)了對(duì)ipa安裝包簽名的驗(yàn)證诸迟,主要區(qū)別在于ipa唯一標(biāo)識(shí)在原有Bundle Identifier的基礎(chǔ)上增加了證書ID茸炒,也就說(shuō)安裝包和手機(jī)上已安裝APP的Bundle Identifier即使一致,如果兩者簽名的證書ID不相同阵苇,那么安裝包也無(wú)法正常安裝壁公。
開始:
_CodeSignature -> ipa包簽名文件
embedded.mobileprovision -> 證書配置文件
替換上面兩個(gè)文件就解決了ipa重簽名的主要問題。
替換_CodeSignature里面的簽名文件需要用到一個(gè)文件entitlements.plist的授權(quán)文件绅项。所以我們要?jiǎng)?chuàng)建一個(gè)entitlements.plist文件紊册,具體格式如下:
xml格式如下:
其中xxxxxxxxxx.com.xxx.xxx要換成ipa標(biāo)識(shí)(就是證書ID+BundleID),其中xxxxxxxxxx就是你的證書ID,后面部分是bundleID
注意:get-task-allow一定要填NO(false)(否則安裝一定失敗)快耿,還有bundleID一定要與新的embedded.mobileprovision相對(duì)應(yīng)囊陡,不然會(huì)導(dǎo)致簽名失敗芳绩。
準(zhǔn)備工作都做好了 ,是開始我們重簽名的真正的步驟了:
1撞反、解壓你所要簽名的ipa包(其中包含Payload(如果是個(gè)人證書打包還會(huì)包含Symbols文件夾))
unzip xxx.ipa
2妥色、刪除Payload中xxx.app里面的_CodeSignature文件夾
rm -rf Payload/xxx.app/_CodeSignature
3、拷貝embedded.mobileprovision(新的必須改名為embedded)到Payload中xxx.app里面
cp embedded.mobileprovision Payload/xxx.app
4遏片、創(chuàng)建entitlements.plist嘹害,并用該文件進(jìn)行重簽名
codesign -f -s "iPhone Distribution: xxxxxxxxxx" --entitlements entitlements.plist Payload/xxx.app
其中”iPhone Distribution: xxxxxxxxxx“是證書名
5、打包
zip -r xxx.ipa Payload (如果之前文件夾包含Symbols文件夾吮便,該文件夾與Payload文件夾一起打包)
6笔呀、安裝到手機(jī)進(jìn)行驗(yàn)證
xcode、iTunes线衫、各種手機(jī)助手凿可、或者一些第三方托管平臺(tái)(比如蒲公英等)