IPA重簽名的那些事

這兩天終于徹底搞定了ipa簽名的問題,整理一下作為總結(jié)

打包流程

IPA打包.png

超好用的resign腳本

之前搜索了一個(gè)很簡(jiǎn)單的resign腳本,跟這里描述的做法差不多《iOS ipa重簽名》。然而在簽我們的ipa的時(shí)候卻發(fā)生失敗,仔細(xì)看了一下,原來是因?yàn)槲覀兊?strong>ipa是啟用了push notification的,需要用到entitlement,然而這個(gè)文件在xcode工程中是找不到的。后來又找到了一篇更實(shí)用的文章《iOS的ipa重簽名》,里面提到的fastlane/sign腳本能夠解決在簽名時(shí)遇到的各種問題,只要mobileprovision文件和p12文件是對(duì)應(yīng)得上,并且證書名稱沒有寫錯(cuò),就絕對(duì)沒有問題了。腳本的核心技術(shù)在于使用了PlistBuddy來解析plist文件里面的信息并做處理,腳本的核心代碼在這一行

/usr/bin/codesign ${VERBOSE} -f -s "$CERTIFICATE" --entitlements="$TEMP_DIR/newEntitlements" "$APP_PATH"

關(guān)于Entitlements

Entitlements其實(shí)是一個(gè)配置文件,對(duì)于一些要開啟的app功能,需要使用Entitlements文件來做配置。Entitlements文件管三個(gè)東西:iCloud、push notificationApp沙盒(iosapp沙盒是自動(dòng)配置的,并不需要Entitlements,所以這里實(shí)際上是指mac下的app沙盒)。官方文檔地址如下:https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AboutEntitlements.html

關(guān)于p12和mobileprovision

在平常用xcode開發(fā)的時(shí)候,我們經(jīng)常會(huì)被兩個(gè)東西卡住Code Signing IdentityProvisioning Profile。其實(shí)這兩個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的就是p12文件和mobileprovision文件。按照蘋果官方的說法,正確的理解應(yīng)該是這樣:

  • mobileprovision:里面描述的是你這個(gè)開發(fā)者id對(duì)應(yīng)的后臺(tái)配置信息,譬如支持什么appid、添加了哪些測(cè)試設(shè)備、開啟了什么特殊功能(GameCenter、IAP、Push)等等,并帶上一個(gè)ID
  • p12:實(shí)際上是一個(gè)鑰匙串,使用了非對(duì)稱加密算法,專門對(duì)你的app進(jìn)行簽名,確保你發(fā)布的app不會(huì)被人冒名頂替。在MemberCenter上下載的證書,實(shí)際上只含有publickey,即你只知道這個(gè)app能用什么名稱來進(jìn)行簽名,但如果真的需要對(duì)app進(jìn)行簽名的話,必須要持有privetakey的原始創(chuàng)建者才能進(jìn)行簽名

綜上,那為什么p12mobileprovision是怎樣對(duì)應(yīng)上的呢,就是因?yàn)?strong>mobileprovision里面含有了p12文件的publickey。

總結(jié)一下:app打包的時(shí)候,通過mobileprovision文件來對(duì)代碼進(jìn)行簽收,通過p12文件完成加密過程,p12文件和mobileprovision文件通過publickey可以一一對(duì)應(yīng)

關(guān)于證書

蘋果的證書類型共有三種

  • iOS Development:真機(jī)調(diào)試用證書,不能用于IPA打包
  • iOS Distribution:打包IPA用證書,不能用于真機(jī)調(diào)試
  • Apple Push Services:用于后臺(tái)APNs用,前端用不上
    一覽表如下

MoreAPNs是用Http2.0協(xié)議來工作的,非常時(shí)髦

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

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

  • ipa 包重簽名最新最簡(jiǎn)單教程 重簽名的意義:ipa 重簽名最大的用處是,不必重新打包,和配置其它第三方獲取 ap...
    紅發(fā)_KVO閱讀 73,605評(píng)論 24 64
  • 引言 關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Pro...
    奮斗的蝸牛閱讀 7,855評(píng)論 2 20
  • 引言關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Prof...
    molake閱讀 48,910評(píng)論 7 62
  • 最近應(yīng)用要用企業(yè)重簽名,(好貴,有個(gè)企業(yè)證書真賺啊)用企業(yè)重簽名后內(nèi)購應(yīng)該就失效了.(歡迎大神答疑) 發(fā)現(xiàn)一篇好文...
    超_iOS閱讀 8,288評(píng)論 4 15
  • 陽光給予溫暖 雨露給予滋潤 風(fēng)兒給予舒張 大地給予養(yǎng)分 除了綻放和微笑 我如此卑微,平常 親愛的啊 請(qǐng)?jiān)?你們的...
    愚壹閱讀 213評(píng)論 0 0

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