由于项目需求,需要制作一个ota zip包的增量升级包,命令如下:
./build/tools/releasetools/ota_from_target_files -v -i ~/chafen2/A.zip ~/chafen2/B.zip ~/chafen2/update.zip
其中 -v代表 打印详细信息, -i代表生成 增量包,A.zip代表基础包, B.zip代表要升级到的包, update.zip代表将来要生成的差分包。
这里有两点需要注意
1. 必须在build目录下运行上面的命令, 如果在releasetools目录下执行 ota_from_target_files -v -i ~/chafen2/A.zip ~/chafen2/B.315.zip ~/chafen2/update.zip, 那么会报错。
2. A.zip 和 B.zip 不是ota包,这点一定要注意, 他们的路径是在out/target/product/mt5880/obj/PACKAGING/target_files_intermediates下。
生成的增量包里其实有两种,一种是由.p组成的, 一种是原始的.apk 或者so。 在ota_from_target_files 这个python文件里, 有一个阀值,默认是0.95, 也就是说,新版本和旧版本的同一个文件对比,如果差异小于0.95,那么就生成.P的差分包, 如果差异大于0.95,那么就把新版本的这个文件放进去,到时候升级的时候直接替换这个文件。
这个阀值的名字是OPTIONS.patch_threshold = 0.95 。
个人感觉 生成.P的差分包不是很实用, 因为用户在安装了原始包后, 很有可能做了一些升级apk,或者其他的改动, 即用户现在系统 和原始包很可能已经不一样了,这个时候生成的.P差分包就会升级失败。 而我们的用户是以万计, 使用.P的差分包很有可能造成很多用户升级失败, 所以我们不再用这种方式的升级包。
修改也很简单, 把OPTIONS.patch_threshold = 0。 就可以了。