天天看点

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。