ipa包重新簽名

重新簽名顧名思義:將原來的ipa包,使用新的證書重新簽名,然后可以在指定的設(shè)備上安裝,比如:我們需要將一個別人的ipa包(限制安裝),使用企業(yè)證書重簽之后可以在任何的手機上安裝。


參考鏈接:

用iReSign工具進行ipa重簽名

iReSign

需要準備的文件:

appName.ipa: 要重簽名的ipa

embedded.mobileprovision: 用來簽名的provision文件

entitlements.plist: 授權(quán)機制

distributionName: 指該簽名對應的證書的名字,在keychain中可以找到對應證書的名稱

下面是具體的步驟:

  • 1.下載iReSign,然后運行Demo,運行起來見下圖:
iReSign.jpg
  • 2.第一行:引入需要重簽的ipa包(這里我的測試的包是Release.ipa)

  • 3.第二行:引入mobileprovision文件(我這里使用的是企業(yè)證書的provision文件)

iRsign2.png
  • 4.第三行:引入entitlements.plist文件【這個也可以不選喲,iResign會自動生成的--最好使用自動生成的】

授權(quán)機制entitlements.plist

授權(quán)機制決定了哪些系統(tǒ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>DH8YJ3MU52.com.q001.niuniu1</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>DH8YJ3MU52</string>
    <key>get-task-allow</key>
    <false/>
    <key>keychain-access-groups</key>
    <array>
        <string>DH8YJ3MU52.*</string>
    </array>
</dict>
</plist>

注意:application-identifier中的AppID必須是用來重簽名證書上的AppID,不然重簽名出來的ipa包安裝會出錯

我們需要修改的字段的值:

application-identifier、com.apple.developer.team-identifier、keychain-access-groups

這些參數(shù)怎么來?參考:mac下查看.mobileprovision文件及鑰匙串中證書.cer文件

打開終端:輸入security cms -D -i mobileprovision文件的路徑

回車:我們可以看到mobileprovision文件里內(nèi)容(這樣可以復制了)

【或者自己手動輸入也可以的,使用空格鍵查看mobileprovision文件,找到相應的信息即可】

自己創(chuàng)建entitlements.plist文件,然后復制上面的,修改字段的值即可

  • 5.第四行:輸入App ID (application-identifier字段的值:我這里是DH8YJ3MU52.com.q001.niuniu1)
    【注意】這里也可以不寫喲,這樣還是保持原來的bundleid,推送還是照樣走原來的
  • 6.點擊p12 文件,然后選擇我們所導入 的p12文件
  • 7.點擊重新簽名即可
  • 8.生成重新簽名的ipa為:Release-resigned.ipa
  • 9.接下來我們看看如何測試ipa是否簽名成功了

參考:Xcode直接安裝ipa


注意點:

1.mobileprovision文件名字可以隨便取,iReSign程序在將mobileprovision文件拷貝到app中時會重命名為embedded.mobileprovision。

2.第三行entitlement.plist必須填寫,不然會一直卡在Entitlements generated。

3.不需要修改BundleID時,修改ID前面的CheckBox不要勾選

可能遇到的問題:

問題一:Error:Product identifiers don't match

解決方法:
可以將源碼中的這個判斷去掉。

NSDictionary *infoplist = [NSDictionary dictionaryWithContentsOfFile:[appPath stringByAppendingPathComponent:@"Info.plist"]];
//                    if ([identifierInProvisioning isEqualTo:[infoplist objectForKey:kKeyBundleIDPlistApp]]) {
                        NSLog(@"Identifiers match");
                        identifierOK = TRUE;
//                    }

【iReSignAppDelegate.m文件里面】
問題二:App installation failed

解決方法:
查看entitlements.plist文件中的application-identifier的Ap pID是不是用來重簽名證書上的AppID

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 昨天在和其他同事研究自動打包時,發(fā)現(xiàn)能夠?qū)?ipa 包重新進行簽名。what's hell? how to ach...
    Dosun閱讀 8,906評論 5 15
  • 軟件環(huán)境 Mac: v10.12.6 (16G29) ruby: v2.3.4 rvm: ...
    chernyog閱讀 764評論 0 0
  • 準備工作 已經(jīng)經(jīng)過破殼處理的iTunes ipa包或者第三方越獄應用等; 開發(fā)者測試證書和描述文件; 簽名工具:s...
    beijiahiddink閱讀 2,805評論 6 8
  • 特別強調(diào) : 證書 和描述文件 必須是企業(yè)證書下的。不要搞錯 企業(yè)證書創(chuàng)建方式: hoc 方式 描述文件 in h...
    鵬鵬的簡書閱讀 4,200評論 8 7
  • ipa 包重簽名最新最簡單教程 重簽名的意義:ipa 重簽名最大的用處是,不必重新打包,和配置其它第三方獲取 ap...
    紅發(fā)_KVO閱讀 73,535評論 24 64

友情鏈接更多精彩內(nèi)容