Android Treble 简介

Treble架构

Android 8.0 重新设计了 Android 操作系统框架(名为“Treble”的项目),以便让制造商能够以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。

在这种新架构中,Android提出了新的供应商接口。它使用HAL 接口定义语言(HIDL)指定 HAL 和其用户之间的接口,将供应商实现与 Android 操作系统框架分离开来。这样,用户可以独立替换 Android 框架,而无需重新编译 HAL。

  • Android 7.x 及更早版本中没有正式的供应商接口。当设备制造上升级Android系统时,需要移植大量的代码。因为Framework与供应商代码打包在一个镜像中,所以必须整体升级。

Android Treble 简介_第1张图片

  • Android 8.0 及更高版本提供了一个稳定的新供应商接口。设备制造商访问的是 Android 代码中特定于硬件的部分,而不会依赖供应商的私有接口。并且供应商会使用独立的vendor分区。这样,设备制造商在更新 Android 操作系统框架,只需要单独升级system分区。同时稳定的供应商接口会保证兼容性。

Android Treble 简介_第2张图片

Treble的目标是将供应商实现(大部分有芯片制造商编写特定设备软件和底层软件)与Android操作系统框架分隔开来,这通过供应商接口来实现。为了确保供应商实现的向前兼容性,供应商接口会由供应商测试套件 (VTS) 进行验证,该套件类似于兼容性测试套件 (CTS)。您可以使用 VTS 在旧版 Android 架构和当前 Android 架构中自动执行 HAL 和操作系统内核测试。

Android Treble 简介_第3张图片

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 计划测试相应补丁。

建立测试环境

要设置测试环境,请按以下步骤操作:

  1. 安装 Python 开发工具包:

    sudo apt-get install python-dev
  2. 安装协议缓冲区工具(适用于 Python):

    sudo apt-get install python-protobuf
    sudo apt-get install protobuf-compiler
  3. 安装 Python 虚拟环境相关工具:

    sudo apt-get install python-virtualenv
    sudo apt-get install python-pip

测试补丁

要测试补丁,请按以下步骤操作:

  1. 构建 VTS 主机端软件包:

    . build/envsetup.sh
    lunch aosp_arm64-userdebug
    make vts -j
  2. 运行默认的 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

你可能感兴趣的:(android)