android 進入Recovery模式自動升級指定固件包

1.獲取update.zip文件
2.驗證簽名文件
3.通過installPackage接口升級,往/cache/recovery/command中寫入recoveryELF的執行參數
4.系統重新啓動進入recovery界面(判斷/cache/recovery 是否有cmd文件)
5.try_update_binary執行升級腳本
6.finish_recovery 重啓

 

app執行安裝/重置/清楚緩存操作調用代碼文件frameworks/base/core/java/android/os/RecoverySystem.java

不同的操作使用不同的方法:

安裝升級包  --------  installPackage

清除用戶數據------  rebootWipeUserData

清楚緩存  -----------  rebootWipeCache

上面的所有操作都是往/cache/recovery/command文件中寫入不同的命令,在進入recovery後(recovery.cpp)對command的關鍵字進行判斷,執行相應的操作,下文會詳細講解,這裏先簡單提及

 

 

根據升級方式不同,分爲:A/B(無縫)系統更新(android O新增)、 傳統的非 A/B 系統更新、

A/B 系統更新,也稱爲無縫更新;確保在OTA(Over-The-Air)升級期間,仍然在磁盤上保留有一份可以正常啓動的系統。

用於確保可運行的啓動系統在無線 (OTA) 更新期間能夠保留在磁盤上。這樣可以降低更新之後設備無法啓動的可能性。
A/B 系統更新使用稱爲 update_engine 的後臺守護進程以及兩組分區。這兩組分區稱爲插槽,通常爲插槽 A 和插槽 B。系統從其中一個插槽(“當前插槽”)運行,但運行的系統不會訪問“未使用的”插槽中的分區(用於正常操作)。

ab升級方式中boot和system均保留了兩份,所以對設備的存儲容量要求會比傳統升級方式要大的多。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章