手機解鎖後刷自製的 recovery,除了可以隨意的 root、升降版本,更重要的是可以打包優化過後的 ROM 刷進去。比如說我想要降版到 1.17.40.16,去官網抓回 ROM 後解開,修改 META-INF/com/google/android/updater-script,把幾行 assert 的訊息拿掉:

assert(!less_than_int(15014039, getprop("ro.build.date.utc")) || greater_than_int(getprop("ro.build.date.utc"), 1392739200));
assert(getprop("ro.build.asus.sku") == "TW");

還有 recovery 目錄與相關的設定也移除,因為想保留自製的 recovery:

package_extract_dir("recovery", "/system");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");

一切就緒後將整包目錄壓回原來的 zip 檔案,開機進入 recovery 透過 adb sideload 刷入,重開機確認成功降版,一切看似美好,直到重新進入 recovery..

手機出現 USB 裝置的圖示,recovery 進不去了?案情不單純,回到 bootloader 嘗試重新刷入,這時出現意外的訊息:

$ fastboot flash recovery recovery_new.img
sending 'recovery' (14944 KB)...
OKAY [  1.976s]
writing 'recovery'...
(bootloader) secure device
(bootloader) unsigned image
FAILED (remote: not allowed to update unsigned image on secure device)
finished. total time: 3.718s

呃.. 手機回到上鎖狀態了?!雖然再執行 unlock app 可以重新解鎖,也能刷回 recovery,但這引發了我的好奇心,相信有將手機解鎖的朋友也碰到這神祕的事件,進而想研究是怎麼一回事。經過一番實驗,得到了驚人的成果!

  1. 有機會讓手機 unlock 後仍可收到 OTA。
  2. 有機會設計出更直接的 root 方法。

不過還需要再確認幾件事情,整理出精簡可行的步驟.. 如果大家有興趣,我再找時間公開成果,或者如果其他朋友也有有趣的發現,歡迎在這邊跟大家分享你的心得。;-)

Comments

comments powered by Disqus