如何编译 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 ,直接拷贝到手机存储卡,然后进入系统升级应用选择本地升级包。