之前需要处理一些应用程序用到的update相关问题, 了解到android build system会利用开源的bsdiff进行一些关于package的更新动作. 这篇文章就分析一下android系统的OTA update.
首先,让我们来看看OTA的整体框架
Build System Support, 用来创建需要的OTA update image(包括全部更新及部分更新)
- Releasetools (build/tools/releasetools/)
用以与build system配合,生成对应的full/incremental的update.zip包
对应的编译脚本在build/core/main.mk及Makefile, 搜索target-files-package关键字
build/tools/releasetools
├── check_target_files_signatures -- 用来检查cert和update包之间的关系
├── common.py -- 各种工具类,参数处理/META文件处理/image生成/sign certification/patch file 操作等等
├── edify_generator.py -- 用来生成edify脚本, 关于edify,参照bootable/recovery/edify/下的readme及tjworld,
主要是给manufacturer提供一个简单的shell语言 来进行必要的recovery操作. 后面会单独写篇文章单独描述一下edify的使用方法
<Android学习之edify是神马>
├── img_from_target_files -- 由生成target zip file的制作被fastboot update命令所使用的xxx.img文件
├── ota_from_target_files -- 生成经过各种签名的TFP更新包
└── sign_target_files_apks -- 用来对apk或者生成测zip更新包进行签名, 参照/development/pdk/