完整升级包目录结构分析

update/

├── AMSS.enc

├── APPSBOOT.enc

├── boot.img

├── build_version.enc

├── META-INF

│   ├── CERT.RSA

│   ├── CERT.SF

│   ├── com

│   │   ├── android

│   │   │   └── metadata

│   │   └── google

│   │       └── android

│   │           ├── update-binary

│   │           └── updater-script

│   └── MANIFEST.MF

├── OEMSBL.enc

├── QCSBL.enc

├── QCSBLHD.enc

├── recovery

│   ├── etc

│   │   └── install-recovery.sh

│   └── recovery-from-boot.p

└── system



升级包目录详解:

  1. boot.img是更新boot分区所需要的文件。包括kernel和ramdisk。
  2. system目录的内容在升级后会放在系统的system分区。主要用来更新系统的一些应用或者应用会用到的一些库等等。
  3. recovery目录中的recovery-from-boot.p是boot.img和recovery.img的补丁(patch),主要用来更新recovery分区,其中etc/目录下的install-recovery.sh是更新脚本。
  4. update-script是一个脚本文件,具体描述了更新过程。我们可以根据具体情况编写该脚本来适应我们的具体需求。该文件的命名由bootable/recovery/updater/updater.c中的宏SCRIPT_NAME的值决定。
  5. update-binary是一个二进制文件,相当于一个脚本解释器,能够识别update-script中的脚本。该文件的命名由bootable/recovery/install.c中的ASSUMED_UPDATE_BINARY_NAME决定。
  6. metadata文件是是描述设备信息及环境变量的元数据。主要包括一些编译选项,签名公钥,时间戳以及设备型号等。
  7. MANIFEST.MF文件定义了与包的组成结构相关的数据。类似Android应用的mainfest.xml文件。 
  8. CERT.RSA:与签名文件相关联的签名程序块文件,它存储了用于签名JAR文件的公共签名。
  9. CERT.SF:这是JAR文件的签名文件,其中前缀CERT代表签名者。

增量升级包目录结构分析

update/

├── META-INF

│   ├── CERT.RSA

│   ├── CERT.SF

│   ├── com

│   │   ├── android

│   │   │   └── metadata

│   │   └── google

│   │       └── android

│   │           ├── update-binary

│   │           └── updater-script

│   └── MANIFEST.MF

├── recovery

│   ├── etc

│   │   └── install-recovery.sh

│   └── recovery-from-boot.p

└── patch

├── system

└── boot.img.p

升级包目录详解:

  1. Patch目录下的boot.img.p是旧版本boot.img的一个补丁。
  2. Patch目录下的system目录是新的system目录与旧的system目录有差别的文件,用于升级。
  3. 其他与完整升级包相同。