1. 程式人生 > >Android關於如何編譯 OTA 包以及如何製作 OTA 差分包

Android關於如何編譯 OTA 包以及如何製作 OTA 差分包

如何編譯 OTA 包以及如何製作 OTA 差分包。
一、何為 OTA 升級?
OTA(Over-the-Air Technology)空中下載技術,就是官方推送的升級包。
OTA升級是Android系統提供的標準軟體升級方式。主要通過網路下載OTA升級包、自動升級,但是也支援通過下載OTA升級包到SD卡手動升級。
OTA的升級包非常的小,一般幾M到十幾M,OTA升級無需備份資料,所有資料都會完好無損的保留下來。
OTA升級一般依賴叫做Recovery的模式來進行升級,一般會有專屬的簽名才能正確完成升級,並且系統必須保證沒有做過精簡刪除等更改才能正常升級。

所以,OTA指的是差分包的升級,不是卡刷包升級。

二、如何編譯製作OTA差分包?
首先明確下OTA的概念:兩個版本之間的差分包。
因此OTA包就需要有兩個版本,一個old,一個new;
並且差分包就是從old到new版本的差分包: old_new_ota
old 和 new 版本編譯的時候一定要保證版本號不能一致,只需要保證兩個版本的以下檔案內容有差異即可(以G1605A舉例):
gionee/config/G1605A_VerNumber 檔案中的內容:
MINI_VER_NUMBER=T0028
例如,old版本中 MINI_VER_NUMBER=T0028 ,那麼new版本中一定要大於28 ,MINI_VER_NUMBER=T0029 即可。

編譯命令:
1. 在old的版本中進行new:
TmakeGionee G1605A -n
2. 在old版本中進行otapackage編譯整包:
TmakeGionee G1605A -i otapackage

3. 在new的版本中進行new:
TmakeGionee G1605A -n
4. 在new版本中進行otapackage編譯整包:
TmakeGionee G1605A -i otapackage

在上述otapackage命令完成後會出現下面的目錄:
├── G1605A_sign_T0028 刷機img
└── G1605A_sign_T0028_OTA 包含卡刷包(整包),以及用於製作ota差分包的臨時包
├── ota
│   └── G1605A_sign_update_amigo3.5.0_T0028.zip 卡刷包
└── tmp
└── G1605A_sign_update_amigo3.5.0_T0028_tmp.zip 用於製作ota差分包的臨時包

差分包的製作:
進入 android_mtk_6737m_65_mp 編譯目錄(old或者new的版本都可),手動建立一個目錄 ota;
將上面old和new版本編譯的製作差分包的臨時包拷貝到ota目錄下,然後執行命令(在android_mtk_6737m_65_mp編譯目錄下執行):
./gionee/config/tools/gn_make_inc_pkg G1605A G1605A_sign_update_amigo3.5.0_T0028_tmp.zip G1605A_sign_update_amigo3.5.0_T0029_tmp.zip (注意前面是old包,後面是new包)
等待命令執行完成,會在ota目錄生成:
G1605A_update_amigo3.5.0_T0029_amigo3.5.0_T0028.zip

差分包升級驗證:
首先手機download 上面old的版本;
拷貝上面生成的差分包 G1605A_update_amigo3.5.0_T0029_amigo3.5.0_T0028.zip 到手機儲存卡,然後進入系統升級應用選擇本地升級包。

整包升級驗證:
將卡刷包 release/G1605A_sign_T0028_OTA/ota/G1605A_sign_update_amigo3.5.0_T0028.zip ,直接拷貝到手機儲存卡,然後進入系統升級應用選擇本地升級包。