Treble架构
Android 8.0 重新设计了 Android 操作系统框架(名为“Treble”的项目),以便让制造商能够以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。
在这种新架构中,Android提出了新的供应商接口。它使用HAL 接口定义语言(HIDL)指定 HAL 和其用户之间的接口,将供应商实现与 Android 操作系统框架分离开来。这样,用户可以独立替换 Android 框架,而无需重新编译 HAL。
- Android 7.x 及更早版本中没有正式的供应商接口。当设备制造上升级Android系统时,需要移植大量的代码。因为Framework与供应商代码打包在一个镜像中,所以必须整体升级。
- Android 8.0 及更高版本提供了一个稳定的新供应商接口。设备制造商访问的是 Android 代码中特定于硬件的部分,而不会依赖供应商的私有接口。并且供应商会使用独立的vendor分区。这样,设备制造商在更新 Android 操作系统框架,只需要单独升级system分区。同时稳定的供应商接口会保证兼容性。
Treble的目标是将供应商实现(大部分有芯片制造商编写特定设备软件和底层软件)与Android操作系统框架分隔开来,这通过供应商接口来实现。为了确保供应商实现的向前兼容性,供应商接口会由供应商测试套件 (VTS) 进行验证,该套件类似于兼容性测试套件 (CTS)。您可以使用 VTS 在旧版 Android 架构和当前 Android 架构中自动执行 HAL 和操作系统内核测试。
Treble相关内容
Treble架构中为了实现系统与供应商的分离,引入了许多新技术。关键的技术包括:
- HIDL:HAL 接口定义语言,用于指定 HAL 和其用户之间的接口的一种接口描述语言 (IDL)。
- HAL:运行 Android 8.0 或更高版本的设备必须支持使用 HIDL 语言编写的 HAL,分为binderized HAL和 passthrough HAL。
- 设备树叠加层 (DTO):将设备树(DT)分割为主DT和叠加DT。叠加DT由ODM厂商提供,存放在ODM分区。通过对叠加DT的修改升级,可以实现在DT中增加设备节点和修改设备属性。
- 供应商原生开发套件 (VNDK):提供了一组让供应商实现其 HAL 的专用库。
- 供应商接口对象(VINTF):用于汇总设备的相关信息并通过可查询的 API 提供该信息。
- SELinux:Android 8.0实现了SELinux策略的模块化和兼容性,目标是使SoC供应商和ODM生产商能够以隔离方式自定义SELinux设置,而无需进行跨分区修改。
使用 VTS 进行系统测试
供应商测试套件 (VTS) 会自动执行 HAL 和 OS 内核测试。要使用 VTS 测试 Android 原生系统的实现情况,请设置一个测试环境,然后使用 VTS 计划测试相应补丁。
建立测试环境
要设置测试环境,请按以下步骤操作:
-
安装 Python 开发工具包:
sudo apt-get install python-dev
-
安装协议缓冲区工具(适用于 Python):
sudo apt-get install python-protobuf sudo apt-get install protobuf-compiler
-
安装 Python 虚拟环境相关工具:
sudo apt-get install python-virtualenv sudo apt-get install python-pip
测试补丁
要测试补丁,请按以下步骤操作:
-
构建 VTS 主机端软件包:
. build/envsetup.sh lunch aosp_arm64-userdebug make vts -j
-
运行默认的 VTS 测试:
vts-tradefed tf> run vts // where vts is the test plan name
VTS 计划
可用的 VTS 测试计划包括:
命令 | 说明 |
---|---|
> run vts | 适用于默认的 VTS 测试 |
> run vts-hal | 适用于默认的 VTS HAL(硬件抽象层)测试 |
> run vts-kernel | 适用于默认的 VTS 内核测试 |
要查看所有计划的列表,请参阅 /test/vts/tools/vts-tradefed/res/config.md
。
参考文档:
Android Architecture
Here comes Treble: A modular base for Android
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。