接下来我们将通过几篇文章来分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理。今天让我先来分析下升级包update.zip。

一、目录结构

update.zip包的目录结构,如下图所示:

二、目录结构分析

下面分析以全量包升级为准。

1、META文件夹

bootargs.txt    bootargs启动参数

filesystem_config.txt    system目录文件权限

recovery.fstab    分区表

2、META-INF目录

目录结构如下:|---META-INF/
       `|CERT.RSA
       `|CERT.SF
       `|MANIFEST.MF
       `|----com/
              `|----android/
                      `|----metadata
              `|----google/
                      `|----android/
                             `|----update-binary
                             `|----updater-script
CERT.RSA:与签名文件相关联的签名程序块文件,它存储了用于签名JAR文件的公共签名。

CERT.SF:这是JAR文件的签名文件,其中前缀CERT代表签名者。

MANIFEST.MF:这个manifest文件定义了与包的组成结构相关的数据。类似Android应用的mainfest.xml文件。

metadata文件:是描述设备信息及环境变量的元数据。主要包括一些编译选项,签名公钥,时间戳以及设备型号等。

updater-script:此文件是一个脚本文件,具体描述了更新过程。我们可以根据具体情况编写该脚本来适应我们的具体需求。

update-binary:是一个二进制文件,相当于一个脚本解释器,能够识别updater-script中描述的操作。

文件怎么来的:

1、CERT.RSA、CERT.SF、MANIFEST.MF、metadata文件是自动生成的(怎么生成详见下文签名部分)

2、update-binary一般是系统编译过程中自动生成的升级脚本,但是这部分是可以通过手动编辑(详见后文update-binary脚本语言详解)

3、update-binary在sdk中哪个部分

./device/hisilicon/bigfish/build/emmc.mk
cp -a $(PRODUCT_OUT)/system/bin/updater $(EMMC_PRODUCT_OUT)/update/file/META-INF/com/google/android/update-binary

又上面脚本部分可知update-binary其实就是updater,updater部分是通过源码编译生成的,源码路径在:

bootable/recovery/updater/

3、system目录

system/目录的内容在升级后会放在系统的system分区。主要用来更新系统的一些应用或则应用会用到的一些库等等。

有的时候会以打包的形式(system.img)存在。

4、userdata目录

userdata目录,用来更新系统中的用户数据部分。这部分内容在更新后会存放在系统的/data目录下。

有的时候会以打包的形式(userdata.img)存在。

5、其他文件

*.img是更新各个分区分区所需要的文件。

三、如何制作一个update升级包

update升级包一般有两种方式得到:

  • 一种是通过编译系统得到update.zip包(make ota-package)
  • 另一种是通过自己手动创建的方式得到update升级包

这里我们主要介绍下如何通过自己手动创建的方式得到update升级包

1、创建文件夹并拷贝你需要的升级文件

可以将原有的升级包中的升级文件解压拷贝过来,再替换你需要的文件,比如在system中添加一个apk或者修改写升级脚本updater-script。

2、打包

将你需要的升级文件导入进来后,通过压缩打包成update.zip包

接下来就是最重要的一步,进行update包签名。

3、update包签名

update.zip包的签名:update.zip更新包在制作完成后需要对其签名,否则在升级时会出现认证失败的错误提示。而且签名要使用和目标板一致的加密公钥。加密公钥及加密需要的三个文件在Android源码编译后生成的具体路径为:
               out/host/linux-x86/framework/signapk.jar 
               build/target/product/security/testkey.x509.pem         
               build/target/product/security/testkey.pk8 。
      我们用命令make 制作生成的update.zip包是已签过名的,如果自己做update.zip包时必须手动对其签名。具体的加密方法:

java –jar yourpath/signapk.jar –w yourpath/testkey.x509.pem yourpath/testkey.pk8 update.zip update_signed.zip
      以上命令在update.zip包所在的路径下执行,其中signapk.jar testkey.x509.pem以及testkey.pk8文件的引用使用你自己(yourpath替换你的)绝对路径。update.zip 是我们已经打好的包,update_signed.zip包是命令执行完生成的已经签过名的包。

另外,在具体升级时,对update.zip包检查时大致会分三步:

①检验SF文件与RSA文件是否匹配。
②检验MANIFEST.MF与签名文件中的digest是否一致。
③检验包中的文件与MANIFEST中所描述的是否一致。

结束语

以上就是对update.zip的分析,希望对大家有所帮助。后续我们还会带来系统升级流程相关知识点的介绍,感兴趣的同学可以关注我们的微信公众号。

上一篇:【android系统】android系统升级流程分析(一)---android升级流程分析
下一篇:【android系统】android系统升级流程分析(三)---updater-script语法(文尾含实例分析)

【android系统】android系统升级流程分析(二)---update升级包分析相关推荐

  1. android 版本更新原理,Android系统Recovery工作原理之使用update.zip升级过程分析(二)...

    Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决 在上一篇末尾提到的生成差分包时出现的问题,现已解决,由于最近比较忙,相 ...

  2. Android系统的启动流程简要分析

    这是我结合网上的资料以及自己分析android4.4的源码整理的笔记,对整个安卓系统的流程启动进行了梳理,很多细节并未展开,只是简要的进行了介绍. 一.Android系统的架构介绍 Android的整 ...

  3. Android系统Recovery工作原理之使用update.zip升级过程分析(二)---u...

    2019独角兽企业重金招聘Python工程师标准>>>  Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的 ...

  4. Android系统Recovery工作原理之使用update.zip升级过程分析(五)

    Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务文章开头我们就提到update.zip包来源有两种,一个 ...

  5. 结合源码探讨Android系统的启动流程

    结合源码探讨Android系统的启动流程 由于本人能力有限,所考虑或者疏忽错漏的地方或多或少应该存在.同时,Android从启动过程开始,实际上就涉及多个技术难点和多种通信机制的知识点. 基于上面两个 ...

  6. android系统浏览器下载流程

    android系统浏览器下载流程 标签: android browser download 简介 当我们用浏览器点开一个下载链接,然后去下载,从宏观上认识,有下载进度的实时更新和界面的跳转.整个过程中 ...

  7. Android系统 lk启动流程简析

    本篇文章是对初步学习Android系统lk启动流程的一个大致简介.方便掌握lk启动流程的大致框架,具体细节后续再进行更新 1. 前言 需要了解的文件类型: 1)编译LK的链接文件(.ld) 2)汇编文 ...

  8. 运营人常备的8个营销模型一、SWOT分析二、PEST分析三、3C

    运营人常备的8个营销模型 一.SWOT分析 二.PEST分析 三.3C战略模型 四.STP理论 五.波特五力模型 六.波士顿矩阵 七.GE矩阵 八.商业模式画布 内容如下: 一.SWOT分析 1.st ...

  9. Android系统Recovery工作原理之使用update.zip升级过程分析(一)

    这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是And ...

最新文章

  1. 数据科学家成长指南(下)
  2. 转:如何求出grid图像每个cell对应的x,y坐标?
  3. Linux 的发行版 Ubuntu 的发展简史
  4. excel去重_数据处理之EXCEL的高效技巧分享
  5. cocos2d c 调用java_cocos2d-x之C++ 调用Java函数并接收返回值
  6. Qt文档阅读笔记-Qt Core的官方解析
  7. Ubuntu16.04 ORB_SLAM2的安装教程
  8. Java 8整装待发 图谋云计算
  9. mysql置疑原因_SQL Server置疑数据库解决方法
  10. 基于SWMM及自主开发城市内涝一维二维耦合软件的复杂城市排水系统建模技术及在城市排涝、海绵城市等领域实践应用
  11. Android Studio查看MD5与SHA1
  12. 奖学金——信息学奥赛一本通1179题解
  13. pdf转word ocr_最强PDF转WORD软件:ABBYY FineReader
  14. PCL点云处理之计算三维向量夹角(六十五)
  15. centos8在桌面添加pycharm和idea快捷方式没有allow launching选项问题
  16. 计算机中登录音乐在哪,网易云音乐扫一扫在哪里
  17. Java超详细基础知识
  18. Android获取QQ名片赞数量,教你如何提高QQ名片赞数量 如何增加QQ赞数量
  19. HUST-多媒体基础PPT目录
  20. 前端学习笔记 - px,em,rem,%,vw,vh,vm

热门文章

  1. 关于java.lang.OutOfMemoryError:java heap space错误解决方案
  2. AV-Test测试:微软MSE媲美多款付费杀软
  3. 时间转换datetime
  4. 全面解析京东商城SEM策略(转载)
  5. jsp页面跳转用法和新窗口打开
  6. 红米k40背部轻敲功能设置教程分享
  7. 2022年全球与中国辐射屏蔽墙行业产销需求与投资预测分析报告
  8. 【数据结构与算法学习笔记001】Kalman滤波
  9. Python:分类模型数据集找不到怎么办?自己动手,丰衣足食!
  10. 华为荣耀3C 4G全机型 TOS 第二版