Android O的大变更
Android O这次来了一个大手笔,谷歌的人第一次到下游厂商进行宣导,并指出了并开始向各家厂商灌输谷歌的新理念:
彻底解决Android版本碎片化的问题
我有幸参加了这次宣讲,虽然由于临近国庆没有拿到谷歌爸爸的PPT。
让我听到最多的字眼是,解决大家升级难的问题,因为每次在升级android的时候,BSP不光要关心底层,还需要不断的关心framework层的一些变动,虽然这样能够更加深度地定制,但其中消耗的人力资源是无法想象的,因此有很多厂商在手机仅升级了3代就拒绝再向用户升级大版本了。因而一直被大家所诟病。
这种事情很无奈啊,你要更新了,但我们的产品已经下架了,维护它是需要成本的,而且升级后鬼知道会不会有其他问题,索性许多厂商就直接拒绝再大版本更新。
谷歌估计也是看到了这一点,所以也想统一做这件事情吧。
当然如果看到这篇文章的大牛们有研究过Google Chromebooks研发过程,你就不会有多少惊讶了,因为chromebooks早已经开始这么玩了。
Android Treble 计划
Android O 引入一个新的计划被命名成“Android Treble ”,按照谷歌的定义,这个计划的目标是”The Android 8.0 release includes Project Treble, a major re-architect of the Android OS framework designed to make it easier, faster, and less costly for manufacturers to update devices to a new version of Android. Treble is for all new devices launching with Android 8.0 and beyond (the new architecture is already running on the Developer Preview for Pixel phones).” 简单翻译一下就是“该计划的主要工作就是重构Android OS 的framework,让Android设备制造商能够更快,更容易,更低成本的去升级Android 版本”
Google已经正式release了Android O AOSP r4版本
Binaries Driver 的组织方式再也不乱,直接会有vendor.img(与system.img),厂商你爱咋玩咋玩,只要你满足哥哥的vendor interface就可以了。我大概看了一下,是将整个HAL层整合到vendor下面去,要定制也需要符合要求。
Android O及之后的版本的框架:
在Android O以及以后的版本当中,Android 更新了新的框架设计在新的框架设计当中,引入了一套叫HIDL的语言来定义Freamework与HAL之间的接口,新的架构如下图:
跟以往的Android 版本相比较,Android O里使用HIDL来解耦Android Framework 与Vendor HAL Implemetation之间的关系,从而简化降低Android系统升级的影响与难度。
Android Framework会在system分区当中,而Vendor HAL Implemetation会在一个新定义的分区(Vendor.img)当中,这样刷新的system.img 才不会影响到Vendor HAL Implemetation,所以在Android O中的升级方式变成以下方式:
从android 8.0开始,Android重构了HAL与Android FW之间的联系结构
* Binderized HALs
* Passthrough HALs,从google的官方介绍来说,这个是对原先HAL的包装,但是最终的binder service 跟binder client都是活在同一个进程当中。这个应该是对老版本HAL的兼容。
* Same-Process HALs,由于某些性能的因素,这些HALs必须运行在Android Framework 所在的进程当中。
按照google的要求,新设计生产的Android O设备,必须而且只能支持 Binderized HALs,而老版本的设备升级到Android O可以支持 Passthrough HALs,但是有些HAL也必须修改成 Binderized HALs。
如图要符合vendor interface。
具体的一些框架性的细节在此就不说了,据我所知的sensor、camera等都有大的变动,基本都移植到了vendor底下去了。
后面会在深入理解sensor这边做详细的分析。