写点什么

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

评论

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

华为云UniXcoder-VESO-v1问鼎CodeXGLUE榜单第一名

华为云PaaS服务小智

算法 代码 华为云 代码语义

软件测试/测试开发丨Selenium环境安装与使用

测试人

程序员 软件测试 自动化测试 测试开发 selenium

数据可视化:趋势类可视化图表大全

2D3D前端可视化开发

数据分析 数据可视化 数据可视化工具 可视化图表

2023-05-29:给你一个由 n 个正整数组成的数组 nums 你可以对数组的任意元素执行任意次数的两类操作 如果元素是 偶数 ,除以 2 例如,如果数组是 [1,2,3,4] 那么你可以对最后一

福大大架构师每日一题

golang 算法 rust 福大大

设计模式之模板方法模式

越长大越悲伤

设计模式

为什么要用线程池?

javacn.site

GitHub上开源24小时获星96K的,从零到实战Java架构师成长手册

Java你猿哥

架构 架构师 高可用架构 高性能架构 高可扩展

GitHub发布即百万!字节内网超实用 java性能优化手册,star超十万

Java你猿哥

Java ssm jvm调优 Java性能优化

焱融科技入选赛迪 2022 中国分布式存储报告挑战者象限

焱融科技

#高性能 #分布式文件存储 #文件存储

Django笔记三十八之发送邮件

Hunter熊

Python django 发送邮件

【1对1咨询】土木女生,挖掘个人优势转行程序员

程序员晚枫

程序员 求职 转行

可逆计算理论中的Delta合并算法

canonical

量子程序设计基础 | 从经典计算到量子计算

TiAmo

量子计算 经典计算

硬核!阿里2023版Spring全家桶进阶笔记流出,堪称Java跳槽神器

Java你猿哥

spring Spring Boot spring security Spring全家桶 Spring Cloud Aliababa

4 种 MySQL 同步 ES 方案,yyds!

Java你猿哥

Java MySQL sql elasticsearch Binlog

如何将数据从旧电脑传输到新电脑,哪种文件传输方式更好

镭速

文心一言 VS 讯飞星火 VS chatgpt (25)-- 算法导论4.2 7题

福大大架构师每日一题

福大大 ChatGPT 文心一言 讯飞星火

深度理解:Redis Hash(散列表)实现原理

Java你猿哥

redis 开源 ssm hash 散列表

打造繁荣社区:Solaris 与 Web3 合作的力量

鳄鱼视界

使用 Node.js、Socket.IO 和 GPT-4 构建 AI 聊天机器人

devpoint

node.js websocket GPT-4

TiDB x Bolt丨超强可扩展性与弹性助力超 1 亿用户畅享出行服务

PingCAP

MySQL 数据库 TiDB

Generative AI 新世界 | 走进文生图(Text-to-Image)领域

亚马逊云科技 (Amazon Web Services)

自然语言处理 机器学习 开源

不止游戏!英特尔锐炫“天生爱创作”

E科讯

引领下一代云计算技术的变革:无服务器架构

xfgg

云计算 severless

《Klustron Tech Talk》直播选题有奖问卷调查,获MySQL系列丛书

KunlunBase昆仑数据库

MySQL

英特尔锐炫实力出击,游戏、内容创作双管齐下!

E科讯

基于WebGPU的AI原生3D引擎迎来新机遇!Orillusion在GOTC上演讲!

Orillusion

开源 渲染引擎 元宇宙 webgpu AIGC

创建矢量图形:Patternodes 3 免激活版

真大的脸盆

Mac Mac 软件 矢量图形创作 创建矢量图形

一块显存为 12GB 的 GPU 卡能够在CST 时域求解器仿真的最大网格数是多少?

思茂信息

cst cst使用教程 cst操作 cst电磁仿真 cst仿真软件

前端开发如何更好的避免样式冲突?级联层(CSS@layer)

vivo互联网技术

CSS 级联 @layer

打造繁荣社区:Solaris 与 Web3 合作的力量

股市老人

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