Android学习之OTA Update

  次阅读 来源:互联网(转载协议) 2016-01-13 21:45 我要评论(0)

之前需要处理一些应用程序用到的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/docs/porting/release_keys.jdhttp://androidxref.com/source/xref/development/中的描述

方便把test-key转换成OEM厂商的release key

使用make target-files-package来编译update.zip, 生成的描述及image文件在

out/target/product/generic/obj/PACKAGING/apkcerts_intermediates/full-apkcerts-eng.txt

out/target/product/generic/obj/PACKAGING/target_files_intermediates/full-target_files-eng.zip

这里需要注意以上都是针对已经通过mkimage(system/core/mkbootimg)的工具生成了boot.img之后,来生成对应的recovery及update image.

上诉工具都不提功boot.img和update image之间的交互操作, 所以在制作update image时,要手动确保你制作的update image能够被安装在预先已经有boot image的device上!!!

同时, 这里提供了给OEM的扩展接口, 可以使得OEM定义一些特有的操作, 并融合到update过程当中. 可以参照资料3的15页的描述, 详细的情况推荐参考CyanogenMod中nexus one中的如下实现:

CyanogenMod/device/htc/passion-common/BoardConfigCommon.mk中releasetools的 扩展定义:TARGET_RELEASETOOLS_EXTENSIONS := device/htc/common

CyanogenMod/device/htc/common/updater/ -- 是OEM各自的updater实现

CyanogenMod/device/htc/common/releasetools.py -- 里面都是一些必须要实现extension 接口, 如,FullOTA_Assertions()/FullOTA_InstallEnd()等

下图简要描述了下update.zip的生成过程

这里请注意, re-sign apks是为了apk的security, 用各个oem厂商的签名替代Test的签名.

签名是使用openssl生成的带public exponent 3 的 2048-bit RSA keys.

Related filesystem partition

谈到Update,不得不提到android的分区情况(参见各个OEM的配置)

boot, 包含以下文件:metadata, kernel image, ramdisk, optional 2nd-stage bootloader image, 由mkbooting(system/core/mkbooting)生成

关于boot.img的格式参见system/core/mkbooting/bootimg.h

[plain]

/*

** +-----------------+

** | boot header| 1 page

** +-----------------+

** | kernel| n pages

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...