正常來說,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 Proxy 這項,按 command + i,在出現對話框選擇「永遠信任」,之後輸入系統密碼即可。
第一次下載
準備完成之後,就可以開始「第一次下載」Facebook 了,之所以說第一次是因為等一下還會有第二次跟第三次。
當下載開始之後,馬上按暫停,然後按兩下鍵盤的 Delete 鍵把任務刪除。
之後看到 Charles 的左邊欄位,會看到有一個是 pxx-buy.itunes.apple.com 的項目(xx 可能是任意數字),然後對它按右鍵,選擇 「Enable SSL Proxying」(範例圖片因為已經選過了,所以會變成 Disable),還有下面的 Breakpoints 也打勾。
第二次下載
然後重下載一次 Facebook App,如果你已經刪除任務,但是 iTunes 提示正在下載中,則切換一下到別的 App 頁面再回來即可。iTunes 可能會跳出什麼憑證沒過之類的警告視窗,就不管他按繼續即可。
當下載開始的時候,Charles 會跳出畫面,第一次是我們送出請求給 Apple,這邊按 execute 讓他繼續,第二次的時候我們要稍等一下,因為這是 Apple 回傳給我們的回覆。看到下圖,選擇 Edit Response,選擇 XML Text,然後往下捲動會看到一堆如圖的數字,這個就是版本號。最困難的點也是在這邊,我們沒有辦法直接從這些號碼得知真正的版本號是多少,只知道新版的號碼會比舊版大。另外一點是因為 iOS 9 之後會有 bitcode 的機制,導致同一個版本的 App 會有不同的 build。
所以這邊你選擇你要的號碼之後,直接按最底下的 Abort 把任務中止掉。
第三次下載
對,我們接下來要進行第三次下載,這次我們要編輯 Request,所以在第一次跳出畫面的時候,就把圖片中的版本號位置換成你剛剛找到的版本號,改好之後按 Execute,接下來就狂按 Execute 到底就好了(或者也可以把 breakpoint 取消掉也行)
最後,檢查你下載的 App,就會發現成功了!!!
補充
大家都知道 IPA 是不能跟別人共享的,但是在找版本號的時候可以互助一下讓大家更快找到需要的版本號。方法很簡單,如果你的朋友或者有任何網友剛好有你想要的舊版的 IPA 檔案的話,請他把 IPA 解壓縮,然後打開 iTunesMetadata.plist,看到 softwareVersionExternalIdentifiers 列表裡面最大的號碼就是了。因為下載來的 IPA 裡面版號列表不會隨著 Apple 伺服器更新,所以最後一項一定永遠是該版本的號碼!
補充 2
如果用可以編輯 IPA 內容的軟體(大家都知道,IPA 實際上就是一個 zip 包),把 iTunesMetadata.plist 刪掉之後存檔,就可以產生不自動更新的 IPA,把這個 IPA 安裝到手機上,就不會被 AppStore 自動更新了。
發佈留言