写点什么

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:024555

评论

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

[原生1v1视频源码]社交市场趋于饱和,出海成为1v1语聊平台的新选择

山东布谷科技胡月

社交APP出海 视频社交APP开发 1v1交友app开发 一对一视频语音系统搭建

Date & Time组件(下)

梦笔生花

datepicker timepicker calendarview

Mega 改进序列模型,引入移动平均捕捉时空依赖

Zilliz

计算机视觉

MYSQL数据库主从配置

Jackey

MySQL 数据库

天翼云位居中国私有云市场领导者象限

天翼云开发者社区

《编程的原则》读书笔记(四):七个设计原则

Chares

软件工程 软件开发 编程原理 软件开发原则

又一重要进展发布!OpenMMLab算法仓支持昇腾AI训练加速

华为云开发者联盟

人工智能 华为云 昇腾AI 企业号 1 月 PK 榜

用无线控制LED显示屏的10个特点

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

重磅!持续应用安全(CAS)白皮书发布,云起无垠入选

云起无垠

Fuzzing CAS白皮书

头号玩家!天翼云蝉联专属云服务市场榜首

天翼云开发者社区

web 3d的开发技术方案选型

好孩子

web3d

软件测试/测试开发 | 服务端接口自动化测试, Requests 库的这些功能你了解吗?

测试人

软件测试 自动化测试 接口测试 测试开发 requests

软件测试/测试开发丨接口测试经典面试题:Session、cookie、token有什么区别?

测试人

软件测试 自动化测试 接口测试 测试开发

FL Studio2024中文版水果电音舞曲制作软件

茶色酒

FL Studio21 FL Studio2024

软件测试/测试开发 | 如何模拟真实使用场景?mock 技术来帮你

测试人

软件测试 自动化测试 接口测试 测试开发 Mock

CAP定理

threedayman

分布式 架构设计 java; 基础

云上的米开朗基罗:在不确定时代,寻找建筑般的确定性

脑极体

使用“宝塔一键迁移”工具,将单机版typecho博客系统迁移到京东云cvm云主机

京东科技开发者

服务器 京东云 安装宝塔 云迁移 企业号 1 月 PK 榜

logback 默认配置文件

JefferLiu

逃不开的安迪-比尔定律,在智能机器人时代该如何破解?

优必选科技

人工智能 机器人 视觉处理

架构实战营 - 模块 4- 作业

zealot0317

1分钟带你学会MySQL覆盖索引,让你的SQL更高效

程序员拾山

MySQL 索引 覆盖索引

打造数字海南,中国电信天翼云赋能海南自贸港智慧发展!

天翼云开发者社区

数据湖(十九):SQL API 读取Kafka数据实时写入Iceberg表

Lansonli

数据湖

软件测试/测试开发 | 接口测试之HTTP 协议讲解

测试人

软件测试 HTTP 自动化测试 接口测试 测试开发

java 本地应用程序加载与修改properties配置文件

JefferLiu

合作升级|Kyligence 跬智智能分析平台入选华为云联营商品

Kyligence

数据分析

喜讯!云起无垠获评“2022中国科创好公司”

云起无垠

网络安全 Fuzzing 2022中国科创好公司

玩转云端| 天翼云数据加密,护航企业数据安全

天翼云开发者社区

软件测试/测试开发 | 接口测试之HTTP、HTTPS 抓包分析

测试人

https 软件测试 HTTP 自动化测试 测试开发

SLS:基于 OTel 的移动端全链路 Trace 建设思考和实践

阿里巴巴终端技术

数据采集 Trace 移动端

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