人人都能吃後悔藥 – 舊版 iOS App 下載方法

English Version Here

正常來說,iOS 不允許我們在沒有 IPA 的情形下進行軟體降級,除非你有一個低版本的 iOS 裝置,則可以下載最後可以安裝在該版本 iOS 的 App。而有時候,因為各種原因,例如新版 App 有 bug、或者變得難用、或者刪除了某些功能…等等各種因素,會讓我們想吃後悔藥,把 App 版本降級。對我來說,因為我有用 TimeMachine 的關係,所以即使新版 App 出了,我還是可以從時光機裡面撈到將近半年前的 App。而對於平常沒有備份習慣的人來說,是不是這樣就無法了呢?其實不是的,今天的教學就是要讓每個人都能下載任意版本的 App,讓你降級升級無煩惱。

本教學參考 weiphone 網的教學,並改編為 Mac 適用的版本,如果你用 Windows,可以參考 原始 Windows 版教學 。

 

事前準備

在這個教學中,我會以 Facebook 為例子,為大家示範下載最舊版 (Facebook 1.0) 的方法。而在開始之前,我們必需準備 Charles 這個 App,原始 Windows 教學是用 Fiddler,但是我用 Mac 版的 Fiddler 加 Mono 無法開啟,所以只好用 Charles。要注意的是 Charles 是一個付費軟體,但是我們可以先下載 30天試用版來使用,如果之後覺得不錯或者有其他需要可以再付費。

安裝 Charles 之後請直接打開就好,系統可能提醒你需要給予權限,就打密碼,至於 Firefox 外掛則不需要裝。接下來,請到 iTunes 裡面刪除 Facebook App,之所以要先刪除是因為我們等一下要重新下載,如果不先刪除就不會出現「下載」的按鈕。

接著我們需要安裝憑證,按照下圖方式安裝。

charles_install_cert

接著開啟鑰匙圈存取,找到 Charles Proxy 這項,按 command + i,在出現對話框選擇「永遠信任」,之後輸入系統密碼即可。

charles_keychain

 

第一次下載

準備完成之後,就可以開始「第一次下載」Facebook 了,之所以說第一次是因為等一下還會有第二次跟第三次。

download_pause

當下載開始之後,馬上按暫停,然後按兩下鍵盤的 Delete 鍵把任務刪除。

之後看到 Charles 的左邊欄位,會看到有一個是 pxx-buy.itunes.apple.com 的項目(xx 可能是任意數字),然後對它按右鍵,選擇 「Enable SSL Proxying」(範例圖片因為已經選過了,所以會變成 Disable),還有下面的 Breakpoints 也打勾。

charles_ssl

 

第二次下載

然後重下載一次 Facebook App,如果你已經刪除任務,但是 iTunes 提示正在下載中,則切換一下到別的 App 頁面再回來即可。iTunes 可能會跳出什麼憑證沒過之類的警告視窗,就不管他按繼續即可。

當下載開始的時候,Charles 會跳出畫面,第一次是我們送出請求給 Apple,這邊按 execute 讓他繼續,第二次的時候我們要稍等一下,因為這是 Apple 回傳給我們的回覆。看到下圖,選擇 Edit Response,選擇 XML Text,然後往下捲動會看到一堆如圖的數字,這個就是版本號。最困難的點也是在這邊,我們沒有辦法直接從這些號碼得知真正的版本號是多少,只知道新版的號碼會比舊版大。另外一點是因為 iOS 9 之後會有 bitcode 的機制,導致同一個版本的 App 會有不同的 build。

所以這邊你選擇你要的號碼之後,直接按最底下的 Abort 把任務中止掉。

charles_version_number

 

第三次下載

對,我們接下來要進行第三次下載,這次我們要編輯 Request,所以在第一次跳出畫面的時候,就把圖片中的版本號位置換成你剛剛找到的版本號,改好之後按 Execute,接下來就狂按 Execute 到底就好了(或者也可以把 breakpoint 取消掉也行)

charles_edit_version

 

最後,檢查你下載的 App,就會發現成功了!!!

Facebook_1_0

 

補充

大家都知道 IPA 是不能跟別人共享的,但是在找版本號的時候可以互助一下讓大家更快找到需要的版本號。方法很簡單,如果你的朋友或者有任何網友剛好有你想要的舊版的 IPA 檔案的話,請他把 IPA 解壓縮,然後打開 iTunesMetadata.plist,看到 softwareVersionExternalIdentifiers 列表裡面最大的號碼就是了。因為下載來的 IPA 裡面版號列表不會隨著 Apple 伺服器更新,所以最後一項一定永遠是該版本的號碼!

iTunesMetadata_plist

11 comments

  • 請問ios5.0.1 有辦法偽裝ios6 嗎?。 神魔之塔更新後最低支援ios6了,有沒有辦法騙過商店,求解謝謝

  • 蔡小寶

    皮樂姐您好,
    我在操作第一次下載app時,
    Charles左邊的工作框都不會出現您所說的
    pxx-buy.itunes.apple.com的項目,
    請問是有什麼地方需要開啟或是順序上有誤的嗎?
    謝謝您

    • 皮樂

      我的都會有耶,你換個網路環境試試看有可能是本身網路有經過代理所以會抓不到

  • kianli

    想问下18372这样的表述里的数字是代表版本号,但是比如facebook的手机应用端我要安装的是还是带有讯息功能的版本的话 这个数字应该如何去判断? 就是从上往下数,取中间值吗?

    • 皮樂

      只能多測試,如果第一次測太大,第二次測太小就取中間值這樣

  • willami

    我下載的舊版本的line已經在ipad中但不能使用,他圖示是黑色的??

  • 壞壞

    你好,我之前已經在Mac平臺成功下載很多次了,就在最近,下載的時候iTunes提示:無法購買[應用名稱]。發生未知錯誤(-9807)。有什麼解決辦法嗎?

    • 皮樂

      我最近沒有測試這個方法耶,不過最近倒是 iTunes 常常下載東西失敗,我覺得是 server 那邊問題

  • 壞壞

    爲什麽發表迴響後看不到呢…

發表迴響