10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

评论

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

十分钟带你回顾Spring常问的知识点,springcloud面试题汇集与答案

Java 程序员 后端

华为Java面试题及答案,java开发实例教程课后答案石磊,查漏补缺

Java 程序员 后端

写给即将正在找工作的Java攻城狮,5分钟搞定

Java 程序员 后端

分享Java资深架构师的成长之路,Java面试常见问题及回答技巧

Java 程序员 后端

Android 构建工具--AAPT2源码解析(一)

vivo互联网技术

打包APK 源码剖析 Android端

助你面试一臂之力,linux基础教程第2版课后思考题答案,阿里巴巴Java面试题

Java 程序员 后端

鸿蒙轻内核源码分析:异常钩子模块系统中断异常,如何转储异常信息

华为云开发者联盟

鸿蒙 内存 存储 函数 异常钩子

Tapdata 携手精诚瑞宝,共拓 Real Time DaaS 蓝海市场

tapdata

数据库

十年Java编程开发生涯,未来教育计算机二级java激活码,面试官突击一问

Java 程序员 后端

4个实验,彻底搞懂TCP连接的断开

捉虫大师

TCP

初级Java面试题大全,极客邦科技面试,linux架构学习视频

Java 程序员 后端

别再说自己不会JVM虚拟机了,35岁技术人如何转型做管理

Java 程序员 后端

声纹识别帮你守住钱袋子,聊一聊证券行业里的人工智能

Zilliz

AI 向量检索 Milvus 向量

准备Java面试?中公教育java讲师,死磕原理

Java 程序员 后端

分享一波阿里、字节、腾讯、美团等精选大厂面试题,Java面试题整理

Java 程序员 后端

分享复习经验和后台开发面经,阿里架构师深入讲解Java开发

Java 程序员 后端

分享我在Java开发中走的一些弯路,不同层级的Java开发者的不同行为

Java 程序员 后端

分享Java资深架构师的成长之路,今日头条面试经历

Java 程序员 后端

分享一点面试小经验,2021年互联网大厂Java笔经

Java 程序员 后端

华为大神花费5个月打造的这份714页学习笔记系列,面试看这个就够了

Java 程序员 后端

云栖大会:《永不止步的云上创新》——蒋江伟

代码 科技革命 计算 云 原生云 CTO 云栖大会

别再说你不会!linux服务器搭建教程视频百度网盘,nginx入门书籍

Java 程序员 后端

十年Java编程开发生涯,尚学堂网易上的中级,推荐一个GitHub项目

Java 程序员 后端

华为财经2021春招面试,尚硅谷springboot笔记,最全Java知识总结

Java 程序员 后端

分享一点面试小经验,2021吊打面试官系列

Java 程序员 后端

劲爆!java微信小程序开发教程视频,Java学习路线指南

Java 程序员 后端

十分钟带你看懂Netty如何实现C-S,美团Java开发面试

Java 程序员 后端

DoS?DDoS?这件事要从另一个D说起……

郑州埃文科技

网络安全 DOS攻击 IP定位

区块链交易隐私如何保证?华为零知识证明技术实战解析

华为云开发者联盟

区块链 金融 零知识证明 同态加密 交易隐私

分享一次面试经历,享学课堂java架构师课程,【高级Java架构师系统学习】

Java 程序员 后端

别再说自己不会了!极客时间破解版没用,Redis成神之路电子版教程已问世

Java 程序员 后端

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