最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Project Treble 是 Android 升级的最终方案吗?

  • 2018-02-17
  • 本文字数:4214 字

    阅读完需:约 14 分钟

关键提要

  • iOS 的更新通常会在发布之后就能在所有受支持的设备上进行安装,然而 Android 的更新速度却慢得让人难以接受。
  • Project Treble 是试图解决这一系列问题(Android 的碎片化)的尝试,它试图通过硬件抽象层(HAL,Hardware Abstraction Layer)对软硬件之间进行更明确的划分从而解决这一问题。
  • 在 Project Treble 和 Android Oreo 之前,供应商的底层硬件代码和 Google 的 AOSP 操作系统(包括 HAL)都是很庞大的。
  • 由于集成了 Project Treble,Google 能够将最新版本的 AOSP 操作系统代码更新到设备,而 OEM 厂商则需要更新底层硬件相关的组件。
  • Project Treble 的关键是通过硬件定义语言(HIDL)、Android 供应商测试套件(VTS,Vendor Test Suite)在 HAL 和它的用户之间定义一个清晰的接口。VTS 是一组测试,用于验证升级后的操作系统与厂商硬件实现之间的兼容性。当前版本的 Android 中大约存在 60 种 HIDL。

iOS 的更新通常会在发布之后就能在所有受支持的设备上进行安装,然而 Android 的更新速度却慢得让人难以接受。事实上,Android 智能手机能收到几次更新是很幸运的,因为现在智能手机的成本更低了,在它的整个生命周期中可能一次更新都收不到。

众所周知,多年以来,碎片化已经成为Android 世界的一个主要问题为Android 平台开发应用程序也变得更复杂了。缺乏安全性、日益增长的脆弱性以及不兼容性是Google、OEM 厂商和用户的主要关注点。

Project Treble 是试图解决这一系列问题(Android 的碎片化)的尝试。在对 Project Treble 进行介绍之前,理解硬件抽象层(HAL,Hardware Abstraction Layer)在 Android OS 框架中的作用能帮助你更好地理解 Project Treble。

硬件抽象层(HAL)

硬件抽象层能够将其实现特性隐藏于更高级别的程序中,在此前提下使得操作系统与硬件设备进行通信。换句话说,HAL 将硬件设备与操作系统分隔开来,如下图所示:

HAL 是在 Linux 内核之下的一层,它用于处理 HAL 和设备硬件组件之间的特定硬件通信。不同于 iOS 设备,Android 设备往往有许多不同的硬件组件,正因为如此,编译后的 Linux 二进制执行文件通常每个设备都是不同的。简单来说,这就是碎片化的问题所在。

Project Treble 前身

在 Project Treble 和 Android Oreo 出现之前,供应商的底层硬件代码和 Google 的高级 AOSP 搞作系统(包括 HAL)是非常庞大的。

也就是说,在Project Treble 出现以前,为了更够让供应商升级到最新版本的Android 系统,他们必须要对供应商的底层硬件代码和Google 的高级AOSP 操作系统进行更新,这一流程使得Android 设备的升级被延迟,并将其置于安全风险中。

除此之外,手机制造商还需要等待硬件合作伙伴发布驱动更新,以确保硬件与最新版本的Android 之间的兼容性。不同于Windows PC 和Mac 设备,Android 并不是即插即用的。

什么是Project Treble?Google 想用它做什么?

Android 更新的主要问题在于,手机制造商迟迟不发布更新。更糟糕的是,随着新型号的到来,手机支持将会被重新进行评估。多年来,消费者一直在向手机制造商和Google 表达不满。现在,Google 的Project Treble 的到来可能会改变手机制造商发布软件更新的方式。

Project Treble 是 Android Oreo 的一部分,它带来了操作系统框架的关键重构。这一项目的主要目标是使得Android 系统的更新更快、更简单。Project Treble 可能是Android Oreo 系统更新中所宣布的最大的变化,但是消费者可能甚至都没有意识到这一点,因为这项改动并不是在手机的表面上。尽管如此,这一改动的好处依旧是不计其数。

然而,你也不要把期望值定的太高,因为对设备的升级依然需要手机供应商的参与。

Project Treble 不同你想

然而,与你想象的相反,Project Treble 并不会将所有的Android Oreo 设备都变成 Pixel 或 Nexus 。事实上,Google 并不是自己来处理软件更新,Android 设备制造商仍然需要将其编译并且进行发布。Project Treble 是 Google 为了加速无线下载(OTA,over-the-air)更新所做的一项努力,但是发布OTA 更新的职责依然属于供应商。OTA 更新会和往常一样推送到你的设备上。如果Project Treble 取得成功,你会更频繁地收到Android 系统的更新通知。

Project Treble 为 OS 框架带来了哪些架构上的变化?

Project Treble 将 Android 操作系统框架从供应商的硬件代码实现中分离出来了。通过这一分离以及得益于 Project Treble 的集成,Google 能够将更高级别的 AOSP 操作系统代码更新到最新版本,而由 OEM 厂商来对其底层硬件相关的组件进行更新。

但是,这并没有解决全部问题。OEM 厂商仍然需要对其底层组件进行更新。并且他们还必须依赖于那些提供大部分硬件代码的SoC 供应商们,这就违背了Project Treble 的初衷。

为了解决这一问题,Google 已经找到了一种解决方案:使用HAL 接口定义语言。它的目标是通过对细节进行抽象来减少对HAL 的依赖。其余的部分依赖于供应商和OEM 厂商。

通过HIDL 解决HAL 问题

正如我们前面所讨论的,HAL 促进了硬件组件和应用程序之间的通信。Android O 正式将HAL 硬件组件进行了划分,比如音频或摄像头,以及操作系统层的客户端。这些新的正式的划分通过硬件定义语言(HIDL,Hardware Definition Language)来描述HAL 和它的用户之间的接口。当前版本的Android 中有大约 60 个不同的 HIDL 包。HIDL 包可以在无需重新构建 HAL 的前提下替换操作系统框架,从而减少了供应商对 Soc 制造商的依赖,能够直接发布下一个 OTA 更新。这就意味着,无需重新编译 HAL 就能发布 OTA 更新,这样就可以迅速应用新版本的Android 系统所带来的变化。

当然了,等待升级到下一个版本的Android 设备的硬件必须与这个版本的Android 系统相兼容。在Project Treble 发布以前,如果要发布软件更新,Android 设备制造厂商需要依赖于电子制造商,而不用考虑当前设备的硬件与当前Android 版本的兼容性。在之前,供应商的实现会受到新版本Android 发布影响,其中包括半导体制造商(高通、联发科、三星等)的硬件专用代码,并且需要更新Android 操作系统框架。随着Project Treble 的发布,现在的情况已经不一样了。img

新的Android 版本现在仅需要和被升级设备的未经改动的供应商实现部分进行兼容即可,升级过程可以通过Android 供应商测试套件来确保顺利完成。 Android 供应商测试套件(VTS,Vendor Test Suite)是一组测试工具,它用于验证升级后的操作系统与供应商实现部分的兼容性。一旦兼容性测试通过,OEM 厂商就可以通过升级 OS 框架的 AOSP 操作系统来发布一个 OTA 升级了。VTS 是一款面向硬件的模拟兼容性测试套件(CTS,Compatibility Test Suite),它可以确保 Android 应用程序的 API 能够在 Android 设备上得以正确的实现。

通过 Android供应商测试套件(VTS)的测试对于 Android 设备来说是至关重要的,因为 HIDL 的目标是在不重新构建 HAL 的情况下替换操作系统框架。HAL 是由半导体供应商进行构建的,并且构建于设备的供应商分区中,这使得操作系统框架被放置于一个自己的分区中,无需重新编译 HAL 就能够通过 OTA 更新进行替换。

不论如何,更新 AOSP 操作系统是发布 OTA 更新的最低要求,但是大多数供应商都可以更新 UI 层,并且可以将他们自己的软件附加至更新中。这一过程需要时间。因此,不要指望 Google 将 Android 更新发布的几周内,Android 升级就会出现在你的设备上,这一福利仍然只属于 Pixel 和 Nexus 设备。

简而言之,尽管升级的方式还是保持不变,但是 Project Treble 已经消除了来自半导体供应商的依赖。

反馈

知名的在线出版社赞扬了 Project Treble,因为它消除了 Android 生态系统中最大的问题之一,包括以下内容:

  • Time 杂志写道, Android Oreo 的这一新特性能够解决 Google 的一个大麻烦。
  • Techradar 称 Project Treble 为 Android 史上最重要的更新。
  • XDA 论坛的 Mishaal Rahmaan 称其为自定义 ROM 的一场革命,因为 Project Treble 使得 Android Oreo 变得极其容易。
  • Andy Rubin 的 Essential Phone、华为、华硕等都在将其设备升级至 Android Oreo 时表示了对 Project Treble 的支持。

然而,许多手机制造商在将他们的设备升级到 Android Oreo 时并没有提供对 Project Treble 的支持。似乎许多 Android 设备制造商对 Project Treble 带来的操作系统框架的架构性改动感到担忧,链接中的这些设备在升级到Android Oreo 时提供对Project Treble 的支持

为什么有一些OEM 厂商选择退出?

OEM 厂商对 Project Treble 的顾虑

对于 Android 厂商来说,将其设备升级从 Nougat 升级至 Oreo 时,Project Treble 这一特性的改动尤其让人担忧。一名 OnePlus 员工在 AMA 会议上给出了担忧背后的合理的理由

Project Treble 需要一个存储分区,通过该分区将 Android 框架和供应商的映像相分离。但是,由于 Android N 和之前的 Android 版本并不需要这一份去,因此我们现在的所有设备都没有该分区。根据我们的测试,如果我们通过 OTA 升级来修改分区布局,那么在进行分区的时候,设备有可能会变砖。我们认为这对于我们的用户来说是一个很大的风险,这就是我们为什么决定不在当前的 OnePlus 设备上添加 Project Treble 支持的原因。

中国智能手机品牌 OnePlus 是首家在 Android 平台上退出 Project Treble 功能的厂商,该公司目前当前和之前的旗舰设备都是基于 Android Nougat 系统的。

Nokia 是第二家对 Project Treble 向公众发布犹豫不决的公司,尤其是在将当前设备升级到支持 Project Treble 的 Android Oreo 的时候:

在将来,HMD 会致力于在所有新的 Android Oreo 设备上实现 Project Treble,我们对可能导致的用户的失望表示道歉。

最后的一点想法

对于 Android 应用程序开发者和用户来说,这的确是一个伟大的时刻,因此 Google 终于解决了它的一大烦恼,即统一操作系统。Project Treble 意味着手机将拥有更长的支持周期,而不是仅仅两年,两年是目前大多数旗舰公司所提供的支持周期。但是,最终这还将取决于 OEM 厂商是否会对其设备发布更新的决定。

关于作者

Shahid Mansuri 是 Peerbits 的联合创始人,Peerbits 是美国领先的 Android 移动应用程序开发公司,成立于 2011 年。他的远见卓识和张扬的管理风格给公司带来了丰硕的成果。他相信,在创业上和商业上,他会把自己的知识基础与自己的知识不断地进行分享。作为一个热爱大自然的人,他喜欢在假期的时候在海滩上展示他的睡衣。

查看英文原文: Is Project Treble the Answer to Android Updates?

2018-02-17 17:024287

评论

发布
暂无评论
发现更多内容

密码密钥硬编码检查

Tom(⊙o⊙)

密码 软件安全 信息泄露 静态代码检查 密钥管理

zookeeper-认识zookeeper

zarmnosaj

7月月更

Qt中 connect的多种方式

小肉球

qt 7月月更

OAI L3与L2接口分析

柒号华仔

5G 7月月更

读书笔记之数据密集型应用的可靠性

宇宙之一粟

读书笔记 7月月更

3000字11张图硬核科普:什么是边缘计算?与云计算有什么联系和区别?

wljslmz

云计算 边缘计算 7月月更

企业级容器安全风险与最佳实践

明亮安全观

网络安全 安全架构 容器安全

《高绩效教练》:如何用提问激发潜能?

郭明

读书笔记

浅入浅出Mybatis(二)

ES_her0

7月月更

分布式——Maven多模块管理

Java学术趴

7月月更

斐波拉契数最小步数与合法括号序列判断

未见花闻

7月月更

【萌新解题】两数之和

面试官问

LeetCode 哈希表 两数之和

到底应不应该使用 lombok

HoneyMoose

iOS 中的 Protocol

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

解读《深入理解计算机系统(CSAPP)》第8章异常控制流

小明Java问道之路

操作系统 异常 csapp 异常机制 7月月更

查找——顺序表的查找和有序表的查找

乔乔

7月月更

记一次uniapp的经历

是乃德也是Ned

uni-app 7月月更

自定义spring boot starter三部曲之一:准备工作

程序员欣宸

spring springboot 7月月更

面试突击65:为什么要用HTTPS?它有什么优点?

王磊

Java 面试题

【Docker 那些事儿】关于Namespace隔离机制的奥秘

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

接口测试进阶接口脚本使用—apipost(预/后执行脚本)

Xd

接口测试

shell脚本定时备份mysql数据库

乌龟哥哥

7月月更

LeetCode第二题,裂开了..

为自己带盐

LeetCode 7月月更

jQuery

Jason199

jquery js 7月月更

不习惯的 Vue3 起步五 のapiHooks封装

空城机

Vue3 7月月更

redis安装

想要飞的猪

重温算法之颜色分类

自由

算法刷题 7月月更

Ark UI 中的问题汇总【系列 2】

坚果

HarmonyOS OpenHarmony Open Harmony 7月月更

Ceph分布式存储初步认识(一)

Lansonli

私有云 Ceph 云存储 7月月更

飙车资深老教练-手撸一个EventBus

芝麻粒儿

android EventBus 7月月更

Qt | 读取文件内容并删除文件 QFile

YOLO.

File 文件操作 qt 7月月更

Project Treble是Android升级的最终方案吗?_移动_Shahid Mansuri_InfoQ精选文章