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!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

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

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...