android的system域解耦

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

google很早在为此做准备要求所有设备能够刷GSI通用系统镜像并跑过XTS测试。

动态分区解耦方案如上图。

一、分区描述

  • 单一系统映像 (SSI)。包含system和system_ext图像的新概念图像。当这些分区对于一组目标设备是通用的时这些设备可以共享 SSI 并跳过构建system和system_ext映像。

  • system_ext分区。可以使用system资源并且可以包含以下系统模块的新分区

  • 在system分区中扩展 AOSP 系统模块。我们建议将此类模块上传到 AOSP以便稍后将它们安装到system分区。

  • 捆绑 OEM 或 SoC 特定模块。我们建议取消捆绑此类模块以便将它们安装到product或vendor分区。

  • system分区。用于 OEM 产品的通用系统映像。我们建议将专有模块移出system分区方法是将它们上游到 AOSP 或将它们移到system_ext分区。

  • product分区。此分区现在可以使用允许的接口来安装未与任何其他分区捆绑的产品特定模块。

  • vendor & odm 分区。系统 (SoC) 供应商vendor与原始设计制造商 (ODM) 为其特定设备他们的板定制片上系统 (SoC) 供应商板支持包 (BSP)。这使他们能够为特定于板的组件、特定于板的守护进程或他们自己在硬件抽象层 (HAL) 上的功能实现内核模块。他们可能还想更换或定制 SoC 组件。

二、project treble架构

https://android-developers.googleblog.com/2017/05/here-comes-treble-modular-base-for.html

Project Treble中整体式 Android 分为两部分特定于硬件的部分供应商实现和通用操作系统部分Android 操作系统框架。每个软件都安装在单独的分区中硬件特定软件的供应商分区和通用操作系统软件的系统分区。一个称为供应商接口 ( VINTF ) 的版本化接口在两个分区中定义和实施。通过使用这个分区系统您可以在不修改供应商分区的情况下修改系统分区反之亦然。

三、镜像之间的接口

供应商和产品图像的两个主要接口围绕 SSI 存在

  • 供应商接口 (VINTF) VINTF 是驻留在供应商和 ODM 映像中的组件的接口。产品和系统镜像中的组件只能通过此接口与供应商和 ODM 镜像进行交互。例如供应商映像不能依赖于系统映像的私有部分反之亦然。这最初是在 Project Treble 中定义的它将图像分成系统和供应商分区。使用以下机制描述接口

  • HIDL 直通 HAL 仅适用于system和system_ext模块

  • 稳定的AIDL

  • 配置

  • 系统属性 API

  • 配置文件架构 API

  • VNDK

  • Android SDK API

  • Java SDK 库

  • 产品界面产品界面是SSI和产品图片之间的界面。定义一个稳定的接口可以将产品组件与 SSI 中的系统组件分离。产品接口需要与 VINTF 相同的稳定接口。但是对于搭载 Android 11及更高版本的设备仅强制执行 VNDK 和 Android SDK API。

四、android.bp参数定义

before enforcement代表之前所在域after enforcement代表配置关键字之后可以所在域使用。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: android