2015/12/1

在 Android 6.0 上免 Root 備份及還原 Line

這篇文章是「修正 Android 上免 Root 備份 Line 不正常的問題」的延續,這次是要從 Android 4.x 移到 Android 6.0 的手機上,以「免 Root 備份與還原 3.9.0v5」這個工具的命名模式,還原的標的手機用 B 為代碼,備份的來源手機就稱為 A。

在前一次操作時 A 與 B 手機都是 Android 4.x 的系統,除了 Line 的版本所造成的問題之外,並沒有遇到其他的情況。但完成了「1.A手機備份資料.bat」、「2.B手機還原資料.bat」的動作之後,要在 Anroid 6.0 的 B 手機上執行「3.B手機免root清除重登.bat」卻出現了問題!

B 手機上並沒有如預期地出現備份的畫面,同時電腦命令列視窗上也有以下的錯誤訊息:

abe unpack 錯誤
ab檔案 unpack tar錯誤

為了要解決問題,所以就著手研究了一下「3.B手機免root清除重登.bat」的執行細節,最後終於順利地把 Line 由 Android 4.x 備份並還原到 Android 6.0 上。由於會遇到的情況不只一個,以下分不同的小節按照備份序順說明解決的方式。

更新最新版本的 adb

「免 Root 備份與還原 3.9.0v5」所附的 adb.exe 應該不是最新的版本,由於「3.B手機免root清除重登.bat」和 「1.A手機備份資料.bat」一樣會執行 adb 的 backup 指令,但檢查「3.B手機免root清除重登.bat」的備份輸出檔 db.ab 卻發現檔案大小是 0。所以導致後續的動作出現錯誤,也由於 db.ab 的內容不正確,unpack 會出現錯誤是必然的情況。猜測應該是因為 adb.exe 與 Android 6.0 不相容,所以才沒有辦法在 Android 6.0 的手機上觸發備份的程序。

如果你的 A 手機已經是 Android 6.0,應該在「1.A手機備份資料.bat」時就會出現問題,最明顯的特徵就是 A 手機上沒有出現要求備份的畫面,而且備份很快就完成了,但檔案大小遠小於 14M。試著更新 adb.exe 到最新應該不會有錯,最少在我操作的環境是可行的。

不過更新的程序有點複雜,沒有辦法一鍵下載。首先要到 Android Developer Tool 網頁下載 SDK 工具,在執行安裝或解壓縮之後,進入 SDK 的根目錄中執行 SDK Manager.exe。SDK Manager 的畫面中,因為我們只是要 adb.exe 所以選擇清單中最上方的 Android SDK Platform-tools 並取消其他所有的勾選後,按下【Install 1 packages...】按鈕。官方網站中有相關的操作說明可供參考。

更新完成之後,可以在 SDK 的 platform-tools 目錄下找到 adb.exe,把檔案複製並覆蓋到「免 Root 備份與還原 3.9.0v5」所在的目錄。

請注意:如果你的 Line 已經更新到最新的版本,備份前,前一篇說明的降版程序還是要先執行。

在執行備份時,由於 Android 6.0 是預設全機加密,所以在手機上出現備份畫面時會要求要設定密碼,才能進行備份,這會和「免 Root 備份與還原 3.9.0v5」的說明有衝突。但也只能設定密碼,否則接下來的動作無法進行。密碼設定好了之後要記得,待會會用到。不過,所設定的密碼不用考慮強度的問題,隨便打一個字元也行。

當 A 手機是 Android 6.0 時,執行「1.A手機備份資料.bat」就會要在 A 手機上輸入備份的密碼。所以在 B 手機執行「2.B手機還原資料.bat」時就不能像「免 Root 備份與還原 3.9.0v5」的說明直接按還原,要把原本設定的備份密碼輸入之後才能成功地執行還原的程序。

完成備份之後最好檢查一下備份結果的檔案大小,如果小於 14M 接下來的步驟大概也不用試了,只能說你跟這個解決方案無緣了!

更新最新版本的 abe.jar

由於到了「3.B手機免root清除重登.bat」時還會再對 B 手機執行一次同機的備份與還原,所以一定會要在備與及還原時輸入密碼。但是在還原之前會需要做 unpack 的動作,批次檔中進行 unpack 的方法是使用 abe.jar,但「免 Root 備份與還原 3.9.0v5」的批次檔中並沒有指定密碼。

所以如果在備份時有設定密碼,「3.B手機免root清除重登.bat」在執行到這一步時會失敗。必須要修改「3.B手機免root清除重登.bat」的內容,在大約 51 行的指令最後加上備份時所設定的密碼字串。例如:在備份時使用的密碼是「0」,則修改的結果如下:


如果加了密碼還是會出現錯誤,有可能是 abe.jar 的版本還沒有支援使用密碼,可以到 SourceForge 下載最新的版本,並且覆蓋「免 Root 備份與還原 3.9.0v5」所提供的檔案即可。

下載 UnlimitedJCEPolicyJDK

如果已經做了以上的步驟,在 abe.jar 進行 unpack 的過程中還是有問題,可以試著下載 Java Cryptography Extension (JCE),依照你目前的 Java 版本,下載對應的壓縮檔,要確認 Java 的版本可以在命令列視窗執行以下的指令:


會看到命令列視窗中輸出「java version "1.x.x_x"」的字串,其中 1.x 的 x 代表的就是 JCE 要下載的對應版本,應該會是 6、7、8 其中一個。確定 Java 版本之後,可以到以下對應的網址下載:


下載後依照壓縮檔內的說明文件,把二個 jar 檔放到指定位置後再執行一次「3.B手機免root清除重登.bat」。JCE 通常放置的位置應該是在安裝 Java 路徑的 lib\security 目錄內。

假設過程一切正常,就可以開始在 Android 6.0 上繼續無接縫地使用 Line 了。如果還是不成功,那就麻煩大喊三聲「我支持拒用 Line」,因為我也愛莫能助了,請節哀!

至於前一篇提到的電話認證的疑問,這次有特別試了一下其實是可以用的,並不一定要使用 Facebook 認證,也許是電話認證的失敗率比較高,所以網路上的文章才比較不推電話認證的方式。