android系统 如何要用差分做升级 android ota在线升级成功后差分包会删除吗

作者&投稿:霍品 (若有异议请与网页底部的电邮联系)
1、首先是差分包patch的生成。在update.zip中的patch文件夹中有需要与系统文件同名但是以xxx.p 为后缀的文件,就是生成的差分patch文件。OTA系统差分包的制作,使用命令:
./build/tools/releasetools/ota_from_target_files -n -i <旧包> <新包> <差分包名>
在查阅ota_from_target_files 的代码可知,是在函数WriteIncrementalOTAPackage里生成差分包的,在这个函数里边创建了common.Difference这个类,继续跟进,在common.py中的类 class Difference(object):里可以看到:
diff_program = DIFF_PROGRAM_BY_EXT.get(ext, "bsdiff")
2、看到了android中提供用来制作差分增量升级包的工具,在android的代码目录下 \external\bsdiff bsdiff是二进制差分工具,其对应的bspatch是相应的补丁合成工具,需要注意的是增量升级的补丁包,是需要在服务器端,即PC端完成:命令:bsdiff oldfile newfile patchfile。
3、bspatch的命令格式为:bspatch oldfile newfile patchfile。

http://my.oschina.net/u/572562/blog/63054

http://hi.baidu.com/thonmin/item/04aa2ae43d04a70f8c3ea8ec



Android OTA开发者做好的差分包是怎么通过~

在make android系统后,会生成系统的img文件。
make otapackage 会生成sd卡用的全部系统升级包,有260M多。要生成增量升级包。需要按以下步骤。
mkdir ~/OTA
source build/envsetup.sh; choosecom 1 1 7 eng
make;make otapackage
先将编译生成的
out/target/product/msm8660_surf/obj/PACKAGING/target_files_intermediates/msm8660_surf-target_files-eng.xxxx.zip
拷贝并且更名放到目录~/OTA/msm8660_surf-target_files-eng.A.zip
在代码中产生一些更新
第二次make;make otapackage
第二次编译生成的out/target/product/msm8660_surf/obj/PACKAGING/target_files_intermediates/msm8660_surf-target_files-eng.xxxx.zip 拷贝并且更名放到目录/OTA/msm8660_surf-target_files-eng.tangzm_B.zip
-在src根目录下执行./build/tools/releasetools/ota_from_target_files -i 。这里必须在src根目录下执行,因为ota_from_target_files.py这个脚本里面写定了相对路径的引用文件。
如:./build/tools/releasetools/ota_from_target_files -v -t MMC -i
~/OTA/msm8660_surf-target_files-eng.A.zip
~/OTA/msm8660_surf-target_files-eng.B.zip
~/OTA/update.zip
~/OTA/update.zip 就是升级用的差分包。
注意:-t MMC 是指使用文件格式为ext4,默认为mtd,即yaffs2。因为我们这个系统使用了ext4文件系统的支持。具体的内容可以看分区表文件src/
具体的参数含义为 -v显示具体命令,-i 为产生增量包。

根目录下两个命令:
1、make ——会生成系统的img文件,system.img,boot.img,userdata.img,recovery.img
2、make otapackage——会生成sd卡用的全部系统升级包,如msm8660_surf-target_files-eng.xxxx.zip

要生成差分升级包,需要先作出两个全升级包,然后根据这两个升级包做出差分升级包
1、制作全系统升级包
source目录下:. build/envsetup.sh(.后有空格)
choosecom 1 1 7 eng
make