一、用iReSign工具進行ipa重簽名
iReSign運行界面:
需要準(zhǔn)備的文件:
appName.ipa: 要重簽名的ipa
embedded.mobileprovision: 用來簽名的provision文件
entitlements.plist: 授權(quán)機制
distributionName: 指該簽名對應(yīng)的證書的名字筐付,在keychain中可以找到對應(yīng)證書的名稱
操作步驟:
步驟一:按照iReSign程序界面提示站蝠,載入各個文件寨昙。
注意:
1.mobileprovision文件名字可以隨便取艺配,iReSign程序在將mobileprovision文件拷貝到app中時會重命名為embedded.mobileprovision捏鱼。
2.第三行entitlement.plist必須填寫,不然會一直卡在Entitlements generated贰镣。
3.不需要修改BundleID時呜象,修改ID前面的CheckBox不要勾選。
步驟二:點擊“重新簽名!”按鈕
稍等一會就會生成example-resigned.ipa新的ipa文件碑隆。
授權(quán)機制entitlements.plist
授權(quán)機制決定了哪些系統(tǒng)資源在什么情況下允許被一個應(yīng)用使用恭陡。簡單的說它就是一個沙盒的配置列表。Xcode會將這個文件作為 --entitlements參數(shù)的內(nèi)容傳給codesign上煤。
這個文件內(nèi)部格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>CDJ7TE32UE.com.test.test</string>
<key>aps-environment</key>
<string>production</string>
<key>com.apple.developer.associated-domains</key>
<string>*</string>
<key>com.apple.developer.team-identifier</key>
<string>CDJ7TE32UE</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>CDJ7TE32UE.*</string>
</array>
</dict>
</plist>
注意:application-identifier中的BundleID必須是用來重簽名證書上的BundleID休玩,不然重簽名出來的ipa包安裝會出錯。
可能遇到的問題:
問題一:Error:Product identifiers don't match
解決方法:
可以將源碼中的這個判斷去掉楼入。
問題二:App installation failed
解決方法:
查看entitlements.plist文件中的application-identifier的BundleID是不是用來重簽名證書上的BundleID哥捕。
作者:Billlin
鏈接:http://www.reibang.com/p/6fe9eb030922
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)嘉熊,非商業(yè)轉(zhuǎn)載請注明出處遥赚。