Android系統更新分為整包更新和差分包更新,整包更新就是将系統中所有的資料都更新,而差分包及增量包,隻是針對系統中更新的部分進行更新。一般來說,像大版本更新,比如從4.4更新到5.0,采用整包更新,平時的小版本更新就使用差分包更新,不同的廠商有自己的考量。但不管哪種方式,更新流程都是一樣的(Android系統OTA更新流程),隻是在制作更新包的過程中有些差别。那這兩者有啥差別呢?
差別:
1、包的大小,整包就相當于ROM,有好幾百兆;差分包也就是增量包,隻是将兩個版本的差異處進行打包,一般幾兆到幾十兆。
2、整包更新對目前版本沒有限制,可以在該項目的任何一個版本基礎上更新;而差分包制作是基于兩個版本的,是以隻能在這兩個版本之間更新,并且是單向的。
更新包制作
一、整包
1. ./mk [project] new
2. ./mk [project] otapackage
先編譯整個工程,編譯完成之後編譯ota包,最後在out目錄下生成更新包,如out/target/product/{project}/obj/packaging/ckt75_cu_gb2-target_files-eng.ckt.zip,這個包就可以在該項目的任何一個版本上更新。
二、差分包
1. ./mk [project] new--- 工程的版本是 V1
2. ./mk [project] otapackage --- 工程的版本是 V1
3. 将V1版本燒錄到對應的手機上
4. 拷貝out/target/product/{project}/obj/packaging/ckt75_cu_gb2-target_files-eng.ckt.zip到根目錄下,并改名為 v1_org -----工程的版本是 V1
5. ./mk [project] new --- 工程的版本是 V2
6. ./mk [project] otapackage --- 工程的版本是 V2
7. 拷貝out/target/product/{project}/obj/packaging/ckt75_cu_gb2-target_files-eng.ckt.zip到根目錄下,并改名為 v2_org -----工程的版本是 V2
8. ./build/tools/releasetools/ota_from_target_files -k releaseKey -i v1_org.zip v2_org.zip v1_2.zip---在工程目錄下執行此指令
9. 如果系統的logo和uboot也更改了,那麼也需要将其添加進去
./build/tools/releasetools/ota_from_target_files -k releaseKey -l logo.img -u uboot.img -i old_ota_target_file.zip new_ota_target_file.zip update.zip。
-k 代表簽名檔案,“releaseKey”是簽名檔案路徑
-l 參數是代表需要更新logo,後面跟logo檔案的路徑,注意不要用簽名過的logo檔案,該檔案可以從ota整包中解壓得來;
-u 參數代表要更新uboot,後面跟uboot檔案路徑,注意不要用簽名過的uboot檔案,該檔案可以從ota整包中解壓得來;
old_ota_target_file.zip代表的是更新前的ota 包源檔案路徑;
new_ota_target_file.zip代表需要更新到的版本的ota包源檔案路徑;
通過以上幾步就生成了差分包v1_2.zip,可以将系統版本從v1升到v2。