前言:

With Android O, we've been working very closely with device makers and silicon manufacturers to take steps toward solving this problem, and we're excited to give you a sneak peek at Project Treble, the biggest change to the low-level system architecture of Android to date.

With Project Treble, we're re-architecting Android to make it easier, faster and less costly for manufacturers to update devices to a new version of Android.

上面两段话来自官网上,Android 8.0 重新设计了 Android 操作系统框架(在一个名为“Treble”的项目中),以便让制造商能够以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。本文主要整理一下Android Treble框架。

 

1、release Andoid open-source code

先来看下之前Android release 的过程:

  • 首先,Android team 向全世界发布最新的open-source code;
  • 其次,使用Android 系统对的芯片公司(高通、MTK、三星)会根据最新Android 的特性,release 最新的硬件(BSP);
  • 接着,device makers(或OEMs) 会根据芯片公司release 的最新特性继续根据自己的需要修改(HAL等);
  • 接着,device makers 会与合作的carriers 进行测试、认证;
  • 最后,将最终的认证版本升级一直到用户。

每当Android 发布一个新版本时候,这些流程都需要重新开始。

 

2、Project Treble

2.1 Before Treble

先来看下google 官网提供的信息:

Version Codename API Distribution
2.3.3 -
2.3.7
Gingerbread 10 0.2%
4.0.3 -
4.0.4
Ice Cream Sandwich 15 0.3%
4.1.x Jelly Bean 16 1.1%
4.2.x 17 1.5%
4.3 18 0.4%
4.4 KitKat 19 7.6%
5.0 Lollipop 21 3.5%
5.1 22 14.4%
6.0 Marshmallow 23 21.3%
7.0 Nougat 24 18.1%
7.1 25 10.1%
8.0 Oreo 26 14.0%
8.1 27 7.5%

上表示Android 不同的系统在市场上使用的份额,用一张图表示:

以 7 天为周期收集的数据(截止于 2018 年 10 月 26 日)。 
未显示任何分布份额不足 0.1% 的版本。

 

这些信息虽然并不是很精确,但也是反映了Android 系统在市场上使用的碎片化,来对比下IOS:

在比较时,我们可以清楚的看到差距。
最新版本的ios版本“ios 11”在几乎惊人的87%的设备上运行。

 

是什么导致了这样的差异呢,为什么Android 系统版本更新后,低版本的设备还占用大量的、不一样的比例?

  • 难度:核心framework层和HAL层是紧密耦合的。
  • 成本:当然,工程和测试的成本很高,不仅在SOC供应商层面,而且在OEM和运营商层面。
  • 漫长:有时时间长短取决于定制的程度,这个过程非常冗长,可能需要数月。

 

对于Treble之前的Android结构是:

对于Android O之前的系统升级都必须要将framework 和HAL 一起编译后(生成systemi.img),进行统一升级。

可以看出framework 与HAL 之间的耦合性很高。对于device makers(或者OEMs)来说,得到新的Android 版本都需要进行HAL 配置、编译、升级等,需要花费大量的精力。

 

2.2  Use treble architecture

使用Treble 的Android 结构是:

在Android O中使用的Treble的架构,只需要升级framework,而无需再次将HAL 部分加入编译、升级,去除了HAL 与framework 之间的耦合性。

这样device makers 只需要维护framework 与HAL 之间的vendor interface(HIDL存在的意义)即可。HAL和 framework不需要一起编译,system和vendor是分开的两个partition。

例如,Android 发布新的版本,芯片厂商在提供BSP 的时候,只需要知道Android 的新特性进行修改,对于HAL 相关的改动会很少(例如预留HAL 的新版本号),OEMs 在HAL 有更新的时候(性能优化或架构调整)也只需要更新vendor 即可。

 

3、Vendor interface

Project Treble aims to do what CTS did for apps, for the Android OS framework. The core concept is to separate the vendor implementation — the device-specific, lower-level software written in large part by the silicon manufacturers — from the Android OS Framework.

Treble 也想CTS对于apps 和framework一样,希望将device makers需要的特殊设备相关的(HAL等)、低级别的软件从Android OS framework分离出来,提出了vendor 分区。进而提出了VTS(vendor test suite)。

 

 

说白了,其实Android Treble就是为了版本升级的简单、高效而提出的,以后platform 相关的都在system 分区中,OEMs相关的都在vendor,而且维护起来也方便,并且为了进一步解决耦合性提出了HIDL 的概念(详细看 Android HIDL 详解)。

 

 

 

相关文章:

Android HIDL 详解

Android HIDL 中 hidl-gen使用

Android HIDL 编程规范

Android HIDL 接口和软件包使用

Android HIDL 实例

 

更多相关文章

  1. Android界面设计之:使用水平视图切换
  2. [置顶] 我的Android博文整理汇总
  3. android studio 使用adb命令传递文件到android设备
  4. 第三课:android数据相关---文件
  5. Titanium中Android模块开发指南(中文)
  6. ANDROID Porting系列一、ANDROID编译系统
  7. Android(安卓)Studio导入Project的方法
  8. Android(安卓)Studio 单刷《第一行代码》系列目录
  9. Android布局优化(三)使用AsyncLayoutInflater异步加载布局

随机推荐

  1. 努力向前,年轻人
  2. startActivity兼容性问题总结
  3. Android应用程序(APK)的编译打包过程
  4. Android 选择图片、上传图片之PictureSel
  5. Android(安卓)设计原则【+整理】
  6. Android 如何在自定义界面上启用输入法 (
  7. java/android计算明天,今天,昨天,后天
  8. 为 Android* 设备构建动态 UI
  9. Android的多媒体框架OpenCore(PacketVide
  10. Android(安卓)Studio开发环境配置(无需上