iOS重簽名

一.理解iOS簽名機制

網(wǎng)上有很多資料,這里不展開細說,重點參考這三篇文章:

https://www.objccn.io/issue-17-2/

http://www.pchou.info/ios/2015/12/14/ios-certification-and-code-sign.html

http://blog.csdn.net/phunxm/article/details/42685597

二.重簽名準備條件

1.已經(jīng)授權(quán)過的 iPhone 設(shè)備,在embedded.mobileprovision可以看到其Device UDID

2.開發(fā)者證書,P12文件,將其安裝到自己的mac上

3.描述文件embedded.mobileprovision,使用前文件名需要改為embedded

4.一個打包好的ipa文件,企業(yè)簽名或者開發(fā)者簽名都可以,

5.授權(quán)文件entitlements.plist,使用前文件名需要改為entitlements

6.應(yīng)用信息Info.plist,從源ipa包中獲取,并且只更改其中的Bundle Identifier屬性。使用前文件名需要改為Info

7.將embedded.mobileprovision,entitlements.plist,Info.plist ,ipa包,這四個文件都放在同一個目錄下

8.下載 iTools 工具


三.文件說明

1.描述文件embedded.mobileprovision 和證書文件是一一對應(yīng)的,在描述文件中有如下信息:

? ? ??AppID

? ? ??證書

? ? ??功能授權(quán)列表

? ? ??Device UDID列表

? ? ??蘋果的簽名

2. entitlements.plist是一個xml格式文件,自己手動創(chuàng)建,其中的key-value根據(jù)embedded.mobileprovision文件中的Entitlements屬性對應(yīng)獲取。只需提取

application-identifier/com.apple.developer.team-identifier/get-task-allow/keychain-access-groups 這四個屬性和值即可

3. Info.plist 從ipa解壓后的Payload文件夾中獲取,拷貝出來后,只將里面的 Bundle Identifier 屬性值改為與 ?embedded.mobileprovision文件中的application-identifier值一致,并去掉其前綴(前綴由十位數(shù)字和大寫字母組成)


四.簽名步驟

打開終端,依次輸入:

1. cd ?{各資料文件所在目錄}

2. unzip {ipaName}.ipa ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 解壓ipa文件

3. cp Info.plist Payload/{ipaName}.app/Info.plist ? ? ? 替換待簽名包中的Info.plist 應(yīng)用程序信息文件

4. rm -rf Payload/*.app/_CodeSignature/ ? ? ? ? ? ? ? ? ? 移除待簽名包中的_CodeSignature 簽名文件,這是個plist文件,涵蓋了包文件中所有文件的簽名

5. cp embedded.mobileprovision Payload/{ipaName}.app/embedded.mobileprovision ? ? ? ? ? ? ? 替換待簽名包中的描述文件

6. /usr/bin/codesign -f -s"iPhone Developer: xxxxxx(2F4935C2YD)"--entitlements entitlements.plist Payload/*.app/

? ? ? ?上面一條為簽名命令,其中? ? "iPhone Developer:xxxxxx (2F4935C2YD)"為相應(yīng)證書中的名字,在key-chain中可查看

7. zip -r {ipaName}Res.ipa Payload/ ? ? ? ? ? ? ? ? ? ? ? ? 壓縮待簽名包中的app文件

8. rm -rf Payload/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?移除Payload文件

除了第3,4,5條可以不分前后,其他步驟嚴格按照順序執(zhí)行


五.自動化執(zhí)行

將先后執(zhí)行的命令,放到一個resign.sh文件中,在resign.sh文件中開頭中加上:#!/bin/sh? ,該文件也放在和其他資料文件同目錄下。最后在該sh文件中加上一些出錯處理,如文件不存在或文件名不正確。

打開終端,輸入:chmod 777 resign.sh ? ? ? ?(給該文件賦予權(quán)限)

接著執(zhí)行:./resign.sh ? {ipaName}.ipa

如果整個流程順利,則會生成 ?{ipaName}Res.ipa文件,通過 iTools 工具安裝到指定的手機上

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

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

  • 一.理解iOS簽名機制 網(wǎng)上有很多資料,這里不展開細說,重點參考這三篇文章: https://www.objccn...
    huig游影閱讀 1,277評論 0 0
  • 前言 由于最近做面向企業(yè)的SDK,經(jīng)常會跟其它企業(yè)合作,公司同步需要測試他們的ipa包來驗收功能,而好多公司并沒有...
    he15his閱讀 9,334評論 8 24
  • 哪些場景需要我們自己動手去做重簽名呢?舉個例子,由于業(yè)務(wù)的需要,在不發(fā)布 AppStore 的情況,需要將自己的 ...
    墮落天使Z閱讀 2,632評論 2 7
  • 塞繆爾·厄爾曼的《年輕》(也另譯為《青春》)是我最喜歡的短文,沒有之一。 喜歡它已經(jīng)挺長的時間,忘記它也已經(jīng)挺長的...
    安吉莉娜創(chuàng)意對話閱讀 1,040評論 31 10

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