Android OTA升级包制作和验证
admin2025-08-12 13:45:44【世界杯比赛视频】
几个概念
**整包升级:**即整个Rom的数据都升级,所以升级包较大,但对要升级的目标系统的版本没有限制
**增量升级:**即只升级有变化的部分,所以升级包较小,但只能针对做比对的俩个系统版本之间来升级。
【完整升级包】:全量包,可直接用于整包升级使用。make otapackage命令后,会生成到out/target/product/{product_name}/{product_name}-ota-eng.{name}.zip
【原始升级包】:过程包,该包会包含更详细的信息。make otapackage命令后,会生成到out/target/product/{product_name}/obj/PACKAGING/target_files_intermediates/{product_name}-target_files-eng.{name}.zip
【增量升级包】:差分包,以俩个【原始升级包】为比较基准,生成的升级包。
制作升级包
制作完整包
source build/envsetup.sh
lunch xxx
make -j16 #编译完后,会在out目录下生成刷机文件(假设叫 a系统)
make otapackage #生成系统升级包(假设【原始升级包】叫a_src,【完整升级包】叫a_upt)
make otapackage成功后,就会生成【原始升级包】a_src和【完整升级包】a_upt。其中【完整升级包】a_upt即可作为全量升级使用。
这样,一个【完整升级包】a_upt.zip,就制作完成了,该包可用于任何系统来升级使用。
PS:之前,看网上有通过命令来生成【完整升级包】的,我试了下发现两者其实是一样的:
# new_upt.zip 与 a_upt.zip 是一样的
./build/tools/releasetools/ota_from_target_files a_src.zip new_upt.zip
制作差分包
首先,简单修改下代码,如添加一个Toast弹出。
然后,再次编译:
make -j16 #编译完后,会在out目录下生成刷机文件(假设叫 b系统)
make otapackage #生成系统升级包(假设【原始升级包】叫b_src,【完整升级包】叫b_upt)
如果,想要做 a系统和b系统 的增量升级的话,则可以通过 a_src和b_src 作为比对基准,来生成两个系统间的差分包:
#参数 -i 是用来生成差分包的
./build/tools/releasetools/ota_from_target_files -i a_src.zip b_src.zip diff.zip
这样,一个【增量升级包】diff.zip就制作成功了。该包只能用于 a系统升级到b系统 使用。
这个问题有这么几个原因:一、SELinux权限的问题。二、升级包