引自https://source.android.com/devices/tech/ota/apex
因本人忘性越来越大,故记录一下本文加深下记忆,描述有些问题的地方见谅。
建议有英文阅读能力的同学自行访问官方网址。
Android Pony EXpress (APEX) 是Android 10引入的一种容器格式,用于底层系统模块的安装flow。因为不用符合Android标准应用程序格式, 因此该格式的引用可以促进更新系统模块。底层模块包括像Native的services和库、HALs、ART等。
背景
尽管Android支持底层系统模块以安装Android应用程序的方式更新,但仍然有以下缺点
1、基于APK的模块无法在启动流程中更早的启动。PackageManager 是apk的重要存储中心,且只能被activity manager启动。因此,APK的模块只能在启动序列较晚的阶段中准备好。
2、APK的格式(尤其是manifest)对系统模块来说并不是非常适合
设计
本节介绍APEX文件格式和APEX Manager。APEX Manager是管理APEX文件的Service。
APEX文件格式
APEX文件格式如下
Note: 上图应该是Android Q的,R应该又有些变化
从顶层看,APEX文件是一个Zip文件,其中的文件均是未压缩的。
其中的四个文件有
- apex_manifest.json
- AndroidManifest.xml
- apex_pubkey
- apex_payload.img
apex_manifest.json文件包括package name和版本,用来标识该APEX文件
AndroidManifest.xml可以允许APEX文件使用一些apk的工具,像adb、package manager、 app install app等。举个例子APEX文件可以使用aapt检查文件的metadata。该文件还包括packcage name和版本号,这些内容通常也会再apex_manifest.json文件中。
apex_pa