Project Treble是Android升级的最终方案吗?
bdrg0591
7年前
<h2>关键提要</h2> <ul> <li>iOS的更新通常会在发布之后就能在所有受支持的设备上进行安装,然而Android的更新速度却慢得让人难以接受。</li> <li>Project Treble是试图解决这一系列问题(Android的碎片化)的尝试,它试图通过硬件抽象层(HAL,Hardware Abstraction Layer)对软硬件之间进行更明确的划分从而解决这一问题。</li> <li>在Project Treble和Android Oreo之前,供应商的底层硬件代码和Google的AOSP操作系统(包括HAL)都是很庞大的。</li> <li>由于集成了Project Treble,Google能够将最新版本的AOSP操作系统代码更新到设备,而OEM厂商则需要更新底层硬件相关的组件。</li> <li>Project Treble的关键是通过硬件定义语言(HIDL)、Android供应商测试套件(VTS,Vendor Test Suite)在HAL和它的用户之间定义一个清晰的接口。VTS是一组测试,用于验证升级后的操作系统与厂商硬件实现之间的兼容性。当前版本的Android中大约存在60种HIDL。</li> </ul> <p>iOS的更新通常会在发布之后就能在所有受支持的设备上进行安装,然而Android的更新速度却 <a href="/misc/goto?guid=4958855496607946203" rel="nofollow,noindex">慢得让人难以接受</a> 。事实上,Android智能手机能 <a href="/misc/goto?guid=4959757144225272639" rel="nofollow,noindex">收到几次更新</a> 是很幸运的,因为现在智能手机的成本更低了,在它的整个生命周期中可能一次更新都收不到。</p> <p>众所周知, <a href="/misc/goto?guid=4959757144318991848" rel="nofollow,noindex">多年以来,碎片化已经成为Android世界的一个主要问题</a> , <a href="/misc/goto?guid=4959757144388999512" rel="nofollow,noindex">为Android平台开发应用程序也变得更复杂了</a> 。缺乏安全性、日益增长的脆弱性以及不兼容性是Google、OEM厂商和用户的主要关注点。</p> <p><a href="/misc/goto?guid=4959757144476110163" rel="nofollow,noindex">Project Treble</a> 是试图解决这一系列问题(Android的碎片化)的尝试。在对Project Treble进行介绍之前,理解硬件抽象层(HAL,Hardware Abstraction Layer)在Android OS框架中的作用能帮助你更好地理解Project Treble。</p> <h2>硬件抽象层(HAL)</h2> <p><a href="/misc/goto?guid=4959757144563279787" rel="nofollow,noindex">硬件抽象层</a> 能够将其实现特性隐藏于更高级别的程序中,在此前提下使得操作系统与硬件设备进行通信。换句话说,HAL将硬件设备与操作系统分隔开来,如下图所示:</p> <p><img src="https://simg.open-open.com/show/80523571ca54fbccd5be4487ddf020fe.gif" alt="Project Treble是Android升级的最终方案吗?" width="567" height="243"></p> <p>HAL是在Linux内核之下的一层,它用于处理HAL和设备硬件组件之间的特定硬件通信。不同于iOS设备,Android设备往往有许多不同的硬件组件,正因为如此,编译后的Linux二进制执行文件通常每个设备都是不同的。简单来说,这就是碎片化的问题所在。</p> <h2>Project Treble前身</h2> <p>在Project Treble和Android Oreo出现之前,供应商的底层硬件代码和Google的高级AOSP搞作系统(包括HAL)是非常庞大的。</p> <p><img src="https://simg.open-open.com/show/e6fef391481bb1ca26eb332e4f96ccad.png" alt="Project Treble是Android升级的最终方案吗?" width="640" height="369"></p> <p>也就是说,在Project Treble出现以前,为了更够让供应商升级到最新版本的Android系统,他们必须要对供应商的底层硬件代码和Google的高级AOSP操作系统进行更新,这一流程使得Android设备的升级被延迟,并将其置于安全风险中。</p> <p><img src="https://simg.open-open.com/show/74da396e7f6505160615b7e305a1ef00.png" alt="Project Treble是Android升级的最终方案吗?" width="427" height="422"></p> <p>除此之外,手机制造商还需要 <a href="/misc/goto?guid=4959757144642714052" rel="nofollow,noindex">等待硬件合作伙伴发布驱动更新</a> ,以确保 <a href="/misc/goto?guid=4959757144642714052" rel="nofollow,noindex">硬件与最新版本的Android之间的兼容性</a> 。不同于Windows PC和Mac设备,Android并不是即插即用的。</p> <h2>什么是Project Treble?Google想用它做什么?</h2> <p>Android更新的主要问题在于,手机制造商迟迟不发布更新。更糟糕的是, <a href="http://www.google.co.in/search?q=handset+support+for+androuid+o+&ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&dcr=0&ei=4kdYWsvJJ-Py8AfF1J-oCA" rel="nofollow,noindex">随着新型号的到来,手机支持将会被重新进行评估</a> 。多年来,消费者一直在向手机制造商和Google表达不满。现在,Google的Project Treble的到来可能会改变手机制造商发布软件更新的方式。</p> <p>Project Treble是Android Oreo的一部分,它带来了操作系统框架的关键重构。 <a href="/misc/goto?guid=4959757144820997000" rel="nofollow,noindex">这一项目的主要目标是使得Android系统的更新更快、更简单</a> 。Project Treble可能是Android Oreo系统更新中所宣布的最大的变化,但是消费者可能甚至都没有意识到这一点,因为这项改动并不是在手机的表面上。尽管如此,这一改动的好处依旧是不计其数。</p> <p>然而,你也不要把期望值定的太高,因为对设备的升级依然需要手机供应商的参与。</p> <h2>Project Treble不同你想</h2> <p>然而, <a href="/misc/goto?guid=4959757144906157342" rel="nofollow,noindex">与你想象的相反</a> ,Project Treble并不会将所有的Android Oreo设备都变成 <a href="/misc/goto?guid=4959757144981558848" rel="nofollow,noindex">Pixel或Nexus</a> 。事实上,Google并不是自己来处理软件更新,Android设备制造商仍然需要将其编译并且进行发布。Project Treble是Google为了加速 <a href="/misc/goto?guid=4959757145060670135" rel="nofollow,noindex">无线下载(OTA,over-the-air)更新</a> 所做的一项努力,但是发布OTA更新的职责依然属于供应商。OTA更新会和往常一样推送到你的设备上。如果Project Treble取得成功,你会更频繁地收到Android系统的更新通知。</p> <h2>Project Treble为OS框架带来了哪些架构上的变化?</h2> <p>Project Treble将Android操作系统框架从供应商的硬件代码实现中分离出来了。通过这一分离以及得益于Project Treble的集成,Google能够将更高级别的AOSP操作系统代码更新到最新版本,而由OEM厂商来对其底层硬件相关的组件进行更新。</p> <p><img src="https://simg.open-open.com/show/f05de9ef363689c099edc6b9866a6f8f.png" alt="Project Treble是Android升级的最终方案吗?" width="1194" height="494"></p> <p>但是,这并没有解决全部问题。OEM厂商仍然需要对其底层组件进行更新。并且他们还必须依赖于那些提供大部分硬件代码的SoC供应商们,这就违背了Project Treble的初衷。</p> <p>为了解决这一问题,Google已经找到了一种解决方案:使用HAL接口定义语言。它的目标是 <a href="/misc/goto?guid=4959757145149498354" rel="nofollow,noindex">通过对细节进行抽象来减少对HAL的依赖</a> 。其余的部分依赖于供应商和OEM厂商。</p> <h2>通过HIDL解决HAL问题</h2> <p>正如我们前面所讨论的,HAL促进了硬件组件和应用程序之间的通信。Android O正式将HAL硬件组件进行了划分,比如音频或摄像头,以及操作系统层的客户端。这些新的正式的划分通过硬件定义语言(HIDL,Hardware Definition Language)来描述HAL和它的用户之间的接口。当前版本的Android中有大约 <a href="/misc/goto?guid=4959757145223170662" rel="nofollow,noindex">60个不同的HIDL包</a> 。HIDL包可以在无需重新构建HAL的前提下替换操作系统框架,从而减少了供应商对Soc制造商的依赖,能够直接发布下一个OTA更新。这就意味着,无需重新编译HAL就能发布OTA更新,这样就可以迅速应用 <a href="/misc/goto?guid=4959757145305139743" rel="nofollow,noindex">新版本的Android系统</a> 所带来的变化。</p> <p><img src="https://simg.open-open.com/show/5e4d92222926227c9c03c88b683eeebd.png" alt="Project Treble是Android升级的最终方案吗?" width="712" height="400"></p> <p><img src="https://simg.open-open.com/show/c871794d266f3ed19faf02e62a293bff.png" alt="Project Treble是Android升级的最终方案吗?" width="712" height="400"></p> <p>当然了,等待升级到下一个版本的Android设备的硬件必须与这个版本的Android系统相兼容。在Project Treble发布以前,如果要发布软件更新,Android设备制造厂商需要依赖于电子制造商,而不用考虑当前设备的硬件与当前Android版本的兼容性。在之前,供应商的实现会受到新版本Android发布影响,其中包括半导体制造商(高通、联发科、三星等)的硬件专用代码,并且需要更新Android操作系统框架。随着Project Treble的发布,现在的情况已经不一样了。img</p> <p><img src="https://simg.open-open.com/show/bb0cf6eeb5ef47d6444289e1091779d0.png" alt="Project Treble是Android升级的最终方案吗?" width="810" height="174"></p> <p>新的Android版本现在仅需要和被升级设备的未经改动的供应商实现部分进行兼容即可,升级过程可以通过Android供应商测试套件来确保顺利完成。 <a href="http://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjD7_rZ2dHYAhUKto8KHRloBsQQFggmMAA&url=https%3A%2F%2Fandroid.googlesource.com%2Fplatform%2Ftest%2Fvts%2F%2B%2Fmaster%2FREADME.md&usg=AOvVaw3BlCasHb-4lLQ5PDuucXBH" rel="nofollow,noindex">Android供应商测试套件(VTS,Vendor Test Suite)</a> 是一组测试工具,它用于验证升级后的操作系统与供应商实现部分的兼容性。一旦兼容性测试通过,OEM厂商就可以通过升级OS框架的AOSP操作系统来发布一个OTA升级了。VTS是一款面向硬件的模拟 <a href="/misc/goto?guid=4959757145468154998" rel="nofollow,noindex">兼容性测试套件(CTS,Compatibility Test Suite)</a> ,它可以确保Android应用程序的API能够在Android设备上得以正确的实现。</p> <p>通过Android <a href="http://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjD7_rZ2dHYAhUKto8KHRloBsQQFggmMAA&url=https%3A%2F%2Fandroid.googlesource.com%2Fplatform%2Ftest%2Fvts%2F%2B%2Fmaster%2FREADME.md&usg=AOvVaw3BlCasHb-4lLQ5PDuucXBH" rel="nofollow,noindex">供应商测试套件(VTS)</a> 的测试对于Android设备来说是至关重要的,因为HIDL的目标是在不重新构建HAL的情况下替换操作系统框架。HAL是由半导体供应商进行构建的,并且构建于设备的供应商分区中,这使得操作系统框架被放置于一个自己的分区中,无需重新编译HAL就能够通过OTA更新进行替换。</p> <p>不论如何,更新AOSP操作系统是发布OTA更新的最低要求,但是大多数供应商都可以更新UI层,并且可以将他们自己的软件附加至更新中。这一过程需要时间。因此,不要指望Google将Android更新发布的几周内,Android升级就会出现在你的设备上,这一福利仍然只属于Pixel和Nexus设备。</p> <p>简而言之,尽管升级的方式还是保持不变,但是Project Treble已经消除了来自半导体供应商的依赖。</p> <h2>反馈</h2> <p>知名的在线出版社赞扬了Project Treble,因为它消除了Android生态系统中最大的问题之一,包括以下内容:</p> <ul> <li><a href="/misc/goto?guid=4959757145549254555" rel="nofollow,noindex">Time杂志</a> 写道, <a href="/misc/goto?guid=4959757145633722056" rel="nofollow,noindex">Android Oreo的这一新特性</a> 能够解决Google的一个大麻烦。</li> <li><a href="/misc/goto?guid=4959757145721463626" rel="nofollow,noindex">Techradar</a> 称Project Treble为Android史上最重要的更新。</li> <li><a href="/misc/goto?guid=4959757145798189308" rel="nofollow,noindex">XDA论坛的Mishaal Rahmaan</a> 称其为自定义ROM的一场革命,因为Project Treble使得Android Oreo变得极其容易。</li> <li>Andy Rubin的Essential Phone、华为、华硕等都在将其设备升级至Android Oreo时表示了对Project Treble的支持。</li> </ul> <p>然而,许多手机制造商在将他们的设备升级到Android Oreo时并没有提供对Project Treble的支持。似乎许多Android设备制造商对Project Treble带来的操作系统框架的架构性改动感到担忧, <a href="/misc/goto?guid=4959757145877255463" rel="nofollow,noindex">链接中的这些设备在升级到Android Oreo时提供对Project Treble的支持</a> 。</p> <h2>为什么有一些OEM厂商选择退出?</h2> <h3>OEM厂商对Project Treble的顾虑</h3> <p>对于Android厂商来说,将其设备升级从Nougat升级至Oreo时,Project Treble这一特性的改动尤其让人担忧。一名OnePlus员工在 <a href="/misc/goto?guid=4959757145961264233" rel="nofollow,noindex">AMA会议</a> 上给出了担忧背后的 <a href="/misc/goto?guid=4959757145961264233" rel="nofollow,noindex">合理的理由</a> :</p> <p>Project Treble需要一个存储分区,通过该分区将Android框架和供应商的映像相分离。但是,由于Android N和之前的Android版本并不需要这一份去,因此我们现在的所有设备都没有该分区。根据我们的测试,如果我们通过OTA升级来修改分区布局,那么在进行分区的时候,设备有可能会变砖。我们认为这对于我们的用户来说是一个很大的风险,这就是我们为什么决定不在当前的OnePlus设备上添加Project Treble支持的原因。</p> <p>中国智能手机品牌OnePlus是首家在Android平台上退出Project Treble功能的厂商,该公司目前当前和之前的旗舰设备都是基于Android Nougat系统的。</p> <p><a href="/misc/goto?guid=4959757146050715732" rel="nofollow,noindex">Nokia是第二家对Project Treble向公众发布犹豫不决的公司</a> ,尤其是在将当前设备升级到支持Project Treble的Android Oreo的时候:</p> <p>在将来,HMD会致力于在所有新的Android Oreo设备上实现Project Treble,我们对可能导致的用户的失望表示道歉。</p> <h2>最后的一点想法</h2> <p>对于Android应用程序开发者和用户来说,这的确是一个伟大的时刻,因此Google终于解决了它的一大烦恼,即统一操作系统。Project Treble意味着手机将拥有更长的支持周期,而不是仅仅两年,两年是目前大多数旗舰公司所提供的支持周期。但是,最终这还将取决于OEM厂商是否会对其设备发布更新的决定。</p> <h2>关于作者</h2> <p><img src="https://simg.open-open.com/show/13d1c1aab1be6d7e50155532c04c55db.png" alt="Project Treble是Android升级的最终方案吗?" width="85" height="100"> Shahid Mansuri 是Peerbits的联合创始人,Peerbits是美国领先的 <a href="/misc/goto?guid=4959757146144483348" rel="nofollow,noindex">Android移动应用程序开发</a> 公司,成立于2011年。他的远见卓识和张扬的管理风格给公司带来了丰硕的成果。他相信,在创业上和商业上,他会把自己的知识基础与自己的知识不断地进行分享。作为一个热爱大自然的人,他喜欢在假期的时候在海滩上展示他的睡衣。</p> <p>查看英文原文: <a href="/misc/goto?guid=4959757146227742266" rel="nofollow,noindex">Is Project Treble the Answer to Android Updates?</a></p> <p> </p> <p>来自:http://www.infoq.com/cn/articles/android-project-treble-intro</p> <p> </p>