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

建立测试环境

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

  1. 安装 Python 开发工具包:

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

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

    sudo apt-get install python-virtualenvsudo apt-get install python-pip

测试补丁

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

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

    . build/envsetup.shlunch aosp_arm64-userdebugmake vts -j
  2. 运行默认的 VTS 测试:

    vts-tradefedtf> 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

更多相关文章

  1. Android中使用Espresso进行UI测试
  2. Roboletric+Retrofit2单元测试
  3. Android中的IPC方式
  4. Weex之Android端的浅析(一)
  5. Android(安卓)的HashMap介绍
  6. 【Android】点击WebView中的按钮,关闭当前activity
  7. Android有四大组件
  8. 基于feng streaming server 搭建Android直播测试平台
  9. 详解android 接口回调

随机推荐

  1. SQL 获取所有上级的实现方法
  2. SQL Server实时同步更新远程数据库遇到的
  3. MSSQL 2000 使用帮助(sql server简明教程
  4. SQL Server 2016 配置 SA 登录教程
  5. SQL Server 2016 无域群集配置 AlwaysON
  6. 解决Windows 10家庭版安装SQL Server 201
  7. SQLServer数据库中开启CDC导致事务日志空
  8. SQL Server日期加减函数DATEDIFF与DATEAD
  9. SQLServer性能优化--间接实现函数索引或
  10. SqlServer 在事务中获得自增ID的实例代码