天天看點

Android系統OTA更新包制作

    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。