ipa重簽名最直接的教程

ipa 包重簽名最新最簡單教程

重簽名的意義:ipa 重簽名最大的用處是,不必重新打包,和配置其它第三方獲取 appkey 等操作,直接重簽名之后依然可以擁有這些功能,更快的發(fā)布測試或者灰度版本。

本文介紹三種方式的重簽名,當(dāng)然著重介紹第一種,因為目前來說是簽名最全面的,也是最可靠的。

首先,我們得準(zhǔn)備需要的東西

  • 開發(fā)證書或者企業(yè)證書,什么都好吧,反正是你想重簽名的證書,關(guān)于證書和 provision描述文件的申請和下載,請參考下面鏈接iOS 證書申請和使用詳解
  1. 這里我說一下必須要注意的點(diǎn),證書必須是申請證書的電腦導(dǎo)出的p12文件才可以,因為有信任認(rèn)證,不然雙擊是不會添加到鑰匙串,也不會顯示出來私鑰的。
  2. 下載下來的 mobileprovision文件必須改名字為 embedded.mobileprovison 然后安裝。
  3. 一般重簽名用企業(yè)發(fā)布證書!個人證書,公司證書當(dāng)然也可以(你重簽的包也只能是你的 devices 里選中的機(jī)器能運(yùn)行)
  4. 按照原理是可以無限重簽的,但是因為蘋果的新的安全驗證機(jī)制,加強(qiáng)了對 ipa 安裝包簽名的驗證,主要區(qū)別在于 ipa 唯一標(biāo)識在原來的Bundle Identifier的基礎(chǔ)上增加了證書的 ID
    圖中的框里面的字符串就是證書 ID,只有兩者完全匹配,才能覆蓋安裝。
  5. 每一個重簽版本都需重新申請一個 appidprovisoning profile,不然同appid的會覆蓋。
  • mac電腦的開發(fā)環(huán)境配置,不得不提的就是工具集的神器HomeBrew
  1. 安裝 homebrew,命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. 安裝 ruby,命令:brew install ruby更新 ruby 版本
  3. 安裝 sigh,命令:sudo gem install sigh如果出錯那就換成gem install sigh安裝過程是漫長的。(在安裝 sigh 之前,你得檢查 gem的鏡像源,現(xiàn)在一般為https://gems.ruby-china.org如果提示 timeout 還是啥的,請把 https 的 s 去掉,重新添加) 設(shè)置可以參考Ruby China
  4. 確保自己這個時候還是清醒的,因為一系列安裝踩坑下來,你都快崩潰了(當(dāng)然,你臉好當(dāng)我沒說)
  • 準(zhǔn)備好需要重簽名的 ipa 包
  1. 準(zhǔn)備好需要重簽名的 ipa 包(不會打包的看這里iOS App打包上架超詳細(xì)流程(手把手圖文教你)
  2. 如果你是偷別人的包,請先把 ipa 包砸殼iOS逆向,這里面的大神帶你飛
  3. 百度上一大堆關(guān)乎重簽名的辦法,但是預(yù)期都不是很理想,因為命令行的方法現(xiàn)在幾乎行不通了。

開始我們的重簽名之路吧

一、sigh resign:最有效,不出錯的重簽名方法。已驗證

  • 第一步,把我們要重簽名的 ipa 包和我們下載下來安裝的 embedded.mobileprovison放在同一文件夾目錄下,同級
  • 第二步,終端 cd 到這個 ipa 的文件夾目錄下,執(zhí)行sigh resign或者 fastlane sigh resign命令
  • 第三步:這時候,sigh 會直接彈出下面這個指令要你輸入:Signing Identity這個就是你的證書的十六進(jìn)制串,輸入之后回車,然后等待見證奇跡的時刻吧。

看圖說話最直接,下面就看看終端的截圖,當(dāng)出現(xiàn)Successfully signed 路徑/xxx.ipa!原來文件夾中的.ipa已經(jīng)被重簽名了。


  • 第四步:驗證我們重簽的 ipa 包的時刻到了

現(xiàn)在還能用的助手不多了,pp 助手目前還存活,iTools 已經(jīng)頻繁報錯沒更新了。pp 助手安裝 ipa 包的流程大致如下:

  1. 點(diǎn)擊應(yīng)用游戲目錄,選擇連接的機(jī)器,有個應(yīng)用列表,點(diǎn)擊左上角有個安裝,這時候就可以安裝我們本地的 ipa 包了
  2. 先安裝重簽名之前的 ipa 包,然后再安裝我們重簽名之后的 ipa 包,如果沒有覆蓋,出現(xiàn)了兩個一模一樣的 App,各自點(diǎn)開沒閃退沒打不開的情況下,說明我們簽名成功了。
  • sigh resign關(guān)于重簽名有時候失敗或者無法安裝的情況說明。
  1. 如果ipa 里面有除了系統(tǒng)之外的 framework或者dylib的話,也需要先簽名,不然也會導(dǎo)致簽名后安裝失敗!至于 sigh 里面大致執(zhí)行的腳本代碼如下:
for framework in "$FRAMEWORKS_DIR"/*
do
 if [[ "$framework" == *.framework || "$framework" == *.dylib ]]
 then
     log "Resigning '$framework'"
     # Must not qote KEYCHAIN_FLAG because it needs to be unwrapped and passed to codesign with spaces
     # shellcheck disable=SC2086
     /usr/bin/codesign ${VERBOSE} ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" "$framework"
     checkStatus
 else
     log "Ignoring non-framework: $framework"
 fi
done

看得懂或者熟悉腳本的同學(xué)可以前往以下地址:/usr/local/lib/ruby/gems/2.3.0/gems/sigh-2.0.1/lib/assets/resign.sh或者/usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.61.0/sigh/lib/assets/resign.sh版本號是根據(jù)自己當(dāng)前 sigh 插件的版本號決定的(直接執(zhí)行此腳本可以重簽多 target 的 ipa:./resign.sh YourApp.ipa "iPhone Distribution: YourCompanyOrDeveloperName" -p "bundel id"=<path_to_provisioning_profile_for_app>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_watchkitextension>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_watchkitapp>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_todayextension>.mobileprovision resignedYourApp.ipa

  1. 蘋果的政策越來越收緊,這種方案的可行性的周期不確定。因為很多方案已經(jīng)隨著版本的更新,變得不可行了。從 iTunes 關(guān)閉了 ipa應(yīng)該管理功能就知道了,對于包的安全性蘋果越來越重視。另外,企業(yè)賬號申請的難度越來越高,也有這種趨勢。
  2. 你們還可以通過下面的文章去嘗試適合自己的方法,有圖形化重簽的工具,也有純命令行的,但是對于結(jié)果,就看個人造化了。

二、iResign 重簽名方案

  • 下載 iResign,下載完直接有個可執(zhí)行的iResign.app,雙擊執(zhí)行
  • 參數(shù)路徑跟圖片上描述的很清楚,第一項是你要重簽名的 ipa 的路徑,第二項是我們重簽名的配置描述文件的路徑(不用改為 embedded 也可以),第四項,填寫我們生成重簽名用到的mobileprovison的 bundle identifier,勾選修改 ID,第五項是我們重簽名用到的mobileprovison的證書
  • 第三項很多教程說不用填,但是不填是無法自動生成的,會一直卡在entitlements generated這個步驟,無法生成。所以我們要自己生成entitlements.plist! 首先我們把要重簽的 XXXX.ipa 解壓后得到 Payload目錄,然后終端 cd 到Payload目錄下,執(zhí)行以下命令:/usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i XXXX.app/embedded.mobileprovision) > Entitlements.plist 其中 XXXX.app 是你要重簽的 ipa的包名。生成的 entitlements.plist存放在Payload目錄下,然后我們用 文本編輯或者 Xcode打開 plist 文件,修改里面的<key>application-identifier</key>
    <string>PREFIX.yourappBundleID</string>為第四項填寫的 bundle id。到此,配置完成,點(diǎn)擊重新簽名!
  • 噔噔噔!簽名成功請看下圖:


  • 用 pp 助手安裝驗證,是沒問題的,可以同時存在兩個不同的包
  • iResign 使用注意事項:第三個 plist 文件是必填的,修改ID 的 bunle id 要跟 plist 修改的對應(yīng)。

三、 iOS ipa重簽名工具 - iOS App Signer

Github的官方 read me 提示:This app requires Xcode to be installed, it has only been successfully tested on OS X 10.11 at this time.

  • 下載 iOS App Signer 源碼,運(yùn)行在 May Mac 上


  • 第一項,填寫我們需要重簽名的 ipa 路徑,第二項是我們要簽名的證書,第三項選擇我們配置的 provisoning profile(默認(rèn)項Re-Sign Only 是無效的),然后,點(diǎn)擊star!
  • pp助手驗證通過!此方式會自動分析 provisoning profile描述文件中的東西,所以不用我們自己填寫變更的bundle id

總結(jié):目前重簽名比較便利的方式就是以上三種,都是腳本方式實(shí)現(xiàn)的,通過便歷XXXX.app 包內(nèi)的內(nèi)容進(jìn)行重簽名和配置。其中關(guān)乎簽名失敗與否的兩個點(diǎn)在于:1. entitlements.plist 的配置 2. 重簽名證書的配置(推送等,還有 bundle id)

參考文章:

iOS ipa包重新簽名

ipa重簽名

iOS 應(yīng)用重簽名上

iOS ipa重簽名終極傻瓜版(含動態(tài)framework、entitlements)

iOS App 簽名的原理

ios app 開發(fā)中ipa重新簽名步驟介紹

iOS ipa重簽名工具 - iOS App Signer

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內(nèi)容

  • 在工作中分發(fā)內(nèi)測應(yīng)用是經(jīng)常遇見的,常見的方式有:TestFlight,用企業(yè)級開發(fā)者賬號,搜集UDID打包等方式,...
    MarkMiao閱讀 2,624評論 1 3
  • 為什么重簽名### 重簽名可以把越獄市場上的app重新用我們自己的開發(fā)者證書進(jìn)行簽名,然后我們就可以在我們不越獄的...
    齊滇大圣閱讀 17,410評論 9 23
  • 引言 關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Pro...
    奮斗的蝸牛閱讀 7,457評論 2 20
  • 重簽名可以把越獄市場上的app重新用我們自己的開發(fā)者證書進(jìn)行簽名,然后我們就可以在我們不越獄的手機(jī)上安裝越獄應(yīng)用了...
    PengPengPro閱讀 5,890評論 0 1
  • 深呼吸,我在糾結(jié)中,卻不知道自己想要什么樣的答案,是自己想離開還是被離開。不懂得改變讓我處于現(xiàn)在的境地還是不努力導(dǎo)...
    洛茴閱讀 267評論 2 2