Android手機FOTA升級的大概流程介紹

原文鏈接:https://blog.csdn.net/baidu_32472003/article/details/80270777

本文內容轉載自FOTA升級流程以及FOTA相關知識總結兩篇文章,有需要可去原文查看。

Android設備的系統升級有兩種方式:

(1)下載更新包到手機後,手動安裝,即所謂“卡刷包”的形式更新;

(2) 通過 Over-the-air(OTA)的方式更新系統,簡稱爲FOTA(Firmware Over The Air)。FOTA升級有兩種方式,一種是Full update,即將整個IMG置於升級包中,然後將升級包直接拷貝到系統;一種是Increamental update,即通過增量式的差分包,只是將系統更新的部分打包,然後以打補丁的形式應用到系統。

Android系統分區

在介紹FOTA升級流程之前,先來看看Android系統的分區。一般,Android系統有如下幾個分區(不同廠商、設備可能有差異):

  • /boot:用於系統啓動的分區,包括Linux系統內核和最小的系統文件。它負責安裝系統和其他分區,並加載system分區的代碼。沒有該分區,手機是無法正常啓動的;
  • /system:該分區包含了出了 kernel/ramdisk之外的系統應用程序和庫文件。正常操作情況下,該分區是隻讀狀態, 其內容僅在OTA更新期間更改;
  • /recovery:用於系統升級打補丁,包含了一個完整的Linux操作系統和一個特殊的recovery包。FOTA升級時,下載完更新包後,進入recovery模式,recovery程序會讀更新包,然後將各個patch應用到各個分區;
  • /misc:升級時,recovery用於存儲相關信息的小分區
  • /data:主要包含了用戶的數據,如聯繫人、短信、設置以及安裝的應用。清除該分區等同於將手機重置,OTA不會影響該分區;
  • /cache:應用使用的臨時儲存區域,訪問該區域需要特殊權限,同時要用於儲存下載的FOTA包。其他程序使用這個空間,期望文件可以隨時消失。某些OTA軟件包安裝可能會導致此分區被完全擦除。

FOTA升級流程

  • 手機會定期檢測是否有更新(也可手動檢測),並通知用戶有新版本可用。
  • 將安裝包下載到cache分區,若cache分區不夠,下載到data分區(這時候要注意是否有寫入和刪除權限),並根據system/etc/security/otacerts.zip的證書驗證其加密簽名。系統提示用戶安裝更新。
  • 系統重啓到recovery模式,運行的是recovery分區中的系統內核。而不是boot中的系統。
  • init進程通過執行init.rc 腳本:service recovery /sbin/recovery 啓動recovery程序
  • recovery首先校驗下載的安裝包是否與res/keys(ramdisk)中的公匙相匹配。
  • recovery根據腳本解析安裝包,然後將修改分別更新到對應的分區中,在system 分區中包含了用於更新recovery分區的內容。
  • 系統正常啓動:啓動更新後的boot,system分區。啓動時檢測是否對recovery分區有更新,若有差異,則更新到recovery分區(這裏也是爲什麼修改了recovery的代碼後,需要更新完,且在下個更新中才能得到驗證)
  • 設備通知服務器更新完成。

OTA包的製作可去FOTA相關知識總結查看。

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