当前位置:   article > 正文

【翻译】 高音项目

【翻译】 高音项目
请考虑订阅 LWN

订阅是 LWN.net 的生命线。 如果您喜欢这些内容并希望看到更多,您的订阅将有助于确保 LWN 继续蓬勃发展。 请访问此页面加入我们,让 LWN 继续在网络上传播。

作者: Jake Edge
2018年9月19日
OSS NA

安卓的 "Project Treble"旨在减少安卓生态系统的碎片化。 根据 Fedor Tcymbal 的说法,这也增加了移植 Android 8("奥利奥"--第一个授权使用 Treble 的版本)的难度。 他在加拿大温哥华举行的2018 年北美开源峰会(Open Source Summit North America 2018)上发表演讲,介绍了该项目及其对芯片和设备供应商的意义。

Tcymbal 就职于软件服务公司 Mera。 该公司与多家系统芯片(SoC)和设备供应商合作,让安卓系统在他们的硬件上运行。 一路走来,该公司为多个安卓版本提供了服务,但安卓 8 因为有了 Treble,"感觉非常不同"。 与以前的安卓版本相比,升级到奥利奥 "要困难得多"。

他引用了几段谷歌员工对 Treble 的描述(幻灯片 [PDF])。 这些引文归结起来就是承认为Treble所做的改动非常大,而且代价高昂。 300 多名开发人员在 Treble 上工作了一年多。 Tcymbal 说:"这让人不禁要问,是什么证明了如此大的工作量是值得的。

[Fedor Tcymbal]

谷歌提出的 Treble 项目是对安卓系统的重新架构,目的是让供应商更容易将设备升级到新版本的移动操作系统。 Android 开源项目(AOSP)的架构是分层的,应用程序位于顶层;应用程序框架、Binder 和 Android 系统服务位于中间;硬件抽象层(HAL)和 Linux 内核位于底层。 谷歌提供中间层,供应商提供硬件抽象层和内核。

然后,他概述了安卓甜点发布前的正常流程。 发布后,它只能在参考平台(如 Pixel)上运行。 然后,硅片供应商在其 SoC 上运行内核,将其转化为电路板支持包(BSP),并将其交给设备制造商,由他们为实际设备进行所有定制。 然后将软件交给手机运营商,再由运营商提供给最终用户。 他说,这最后一步其实不是必需的,但在北美很常见。

每个步骤都需要一定的时间,一般需要 6-12 个月。 此外,这些步骤只有在每个参与者都有兴趣实现的情况下才会发生。 如果 SoC 或设备不再销售,这些供应商可能就不会履行自己的职责,用户也就无法升级。 Tcymbal说:"谷歌不喜欢这样"。

今年 7 月,即奥利奥发布近一年后,只有 12% 的设备在使用奥利奥。 这意味着,所有的新功能、安全升级等,只有在几年后人们购买新设备时才能真正享受到。 事实上,奥利奥的使用率与 5、6 年前发布的果冻豆和 KitKat 的使用率大致相同。 这与 iOS 界的情况不同,在 iOS 界,设备会立即得到更新。 因此,谷歌创建新版本的努力在很大程度上是白费的。

HAL 和 API

Tcymbal 说,新版 Android 发布后,所有旧版本的应用程序都能继续运行,因为旧版本的 API 仍受支持。 Tcymbal 说,升级到新版 Android 需要花费大量时间,因为谷歌没有意识到,它需要向下几层做同样的事情。 在 Treble 项目之前,Android 系统服务和 HALs 之间并不存在严格的界限,这正是该项目的目的所在。

在 Treble 项目之前,HAL 接口是以一堆 C 头文件的形式指定的。 每个新版本的安卓系统都意味着有新的接口和头文件。 因此,每个 HAL 都需要根据新的接口进行更新,并针对新版本的安卓系统进行重建。 这就是供应商不得不花费大量时间进行更新的原因。

有了 Treble,现在有了 HAL 接口定义语言(HIDL),而不是 C 头文件。 此外,谷歌还提供了几个过渡步骤,供厂商向新架构过渡。 传统的 HAL 仍然可以从进程中调用,而不是从 Binder 中调用,这是未来的趋势。 谷歌为传统 HAL 创建了一个封装器,使其更容易与 Treble 一起使用。 谷歌设想的最终目标是用硬件服务的供应商实现取代传统的 HAL。 Mera 没有这样做,而是继续使用传统的 HAL;Tcymbal 认为其他厂商也可能会这样做。

Treble 引入了一个供应商接口对象,在执行空中下载(OTA)更新之前对其进行检查。设备向 OTA 服务器发送清单和兼容性矩阵,OTA 服务器会检查新版本是否能在设备上运行。 该对象包含有关 HAL 版本和接口、内核版本和配置选项、SELinux 策略版本以及 Android 验证启动版本的信息。 设备提供的信息可用来确保设备不会升级到新的 Android 版本。 Tcymbal说,他不明白谷歌为什么允许这样做,因为设备供应商可能有动机阻止升级,以便销售更新的设备。

现在有一个 "黄金"/系统镜像安装在设备上,它必须在不修改的情况下运行。 还有一个新的/vendor分区,用于特定供应商的 HAL。 他说,这一切都很合理,但这意味着设备必须重新分区才能升级到安卓 8。 然而,一些供应商不愿意允许升级,因为他们不想冒弄坏用户正在使用的手机的风险。

AOSP 的兼容性测试套件(CTS)旨在检查安卓框架是否按预期运行。 Treble 增加了一个供应商测试套件(VTS),将测试扩展到系统的下几层。 其目的是检查 HAL 是否真正提供了其声称提供的接口。 想要认证其设备(以便获得 Google Play 服务)的供应商需要通过 VTS。 通过该套件意味着/system黄金映像可以在设备上运行。

问题

他说,Treble 为设备和 SoC 厂商规定了许多新内容,这给其中一些厂商带来了一些问题。 通常,一个小团队升级到一个新版本的安卓系统需要两个月左右的时间。 他说,他的团队花了 6 个月的时间升级到 Treble;一般来说,大多数供应商发现需要三倍的时间。

另一个问题是 Binder,他说。 我们的想法是让 Binder 对特定硬件的处理进行调解,但它 "有点慢",因为它使用进程间通信(IPC)进行通信。 这对于图形处理等工作来说太慢了,因此始终需要直通式 HAL,这也是架构愿景的一个例外。

像 Treble 这样的大变革只会带来新的错误。 他听说,Treble 的改动大约有一百万行代码;如此大的改动,Android 开发人员 "很可能破坏了一些东西"。 他们很可能还引入了新的安全漏洞。

他对 Treble 的最后一个担忧是,它可能会导致设备领域更加统一。 必须遵守谷歌的各种规定可能会让设备制造商更难推出新功能。 谷歌说它希望有各种不同的设备,但 Treble 是向标准化迈出的一步,可能会减少设备的多样性。

成功吗?

最近推出的 Android 9("Pie")只是为 Treble 做了一些最后的润色--大部分工作都是在 Oreo 上完成的。 他说,这确实给了我们一个机会,看看 Treble 的效果如何。 有很多设备从 Oreo 升级到了 Pie,这是一个很好的结果。 此外,Pie 测试版还支持 12 款设备,而通常情况下,只有 Pixel 参考平台(或可能在此基础上的其他平台)才会支持。

虽然与 Treble 没有直接关系,但 Tcymbal 发现一个有趣的现象,即新应用的强制 API 目标已提升至 API 26 级(这是 Android 8.0 提供的)。 如果新应用程序不符合这一要求,就无法进入 Play 商店。 这表明了谷歌的整体发展方向:Treble 推动设备制造商遵守规定,现在应用程序制造商也受到了推动。 他说,如果没有 Treble,这将是不可能的。

总之,Treble 是对最糟糕的错误--架构错误--的修复。 谷歌没有考虑到升级到新版本的影响,因此不得不付出代价。 设备和 SoC 供应商也为这一错误付出了代价。 从技术角度看,Treble 显然是成功的,但从商业角度看,它是否成功就不那么清楚了。 我们的想法是将设备的使用寿命延长至四五年,但现在断言这是否会成为现实还为时尚早。 我们将拭目以待。

[感谢 LWN 的旅行赞助商 Linux 基金会为我参加在温哥华举行的开源峰会提供的旅行资助。



(登录后发表评论)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/1007160
推荐阅读
相关标签
  

闽ICP备14008679号