重塑Android通信新格局:探秘Android 8.0 之后的Binder架构革新

图片
  1. 引言

Android作为全球主流移动操作系统,在移动设备领域扮演着举足轻重的角色。其开放性、灵活性和广泛的应用生态系统使得无数用户和开发者受益。作为一个基于Linux内核的操作系统,Android的核心架构设计至关重要,特别是其中的进程间通信机制Binder更是其基石之一。

随着技术的不断发展和Android版本的更新迭代,Android系统不断进行优化和改进,以提升系统性能和用户体验。而在Android 8.0版本中,Binder作为系统中最核心的进程间通信机制之一,经历了一次革命性的更新,这一变革被认为是Android系统发展中的里程碑之一。

Android 8.0 Binder架构的更新不仅仅是技术上的改进,更是对系统性能和安全性的全面提升。新的Binder架构为Android系统带来了更高效、更安全的进程间通信方式,将对系统整体性能和用户体验产生深远影响。通过深入探讨Android 8.0 Binder架构的变革,我们可以更好地理解Android系统的进化轨迹,以及未来系统发展的潜力与可能性。

  1. Binder通信机制简介

在Android系统中,进程间通信(IPC)是至关重要的,不同组件之间需要相互通信以完成各自的任务。作为Android系统中最核心的进程间通信机制之一,Binder扮演着至关重要的角色。

Binder通过轻量级的线程间通信方式,实现了跨进程通信,包括进程间对象传递、远程方法调用等功能。相比于传统的Socket通信或文件操作,Binder具有更高效、更快速的通信方式,使得Android系统在处理复杂的多进程场景时更加高效。

然而,传统的Binder在Android系统中也存在一些局限性,比如在处理大数据量传输时性能下降明显,跨越多个应用程序的通信受限等。因此,针对这些问题,Android 8.0版本对Binder进行了全面升级和优化,以提升系统整体性能和稳定性。接下来我们将深入探讨Android 8.0 Binder架构更新所带来的改变和优势。

  1. Android 8.0 Binder架构更新背景

3.1 Android 8.0系统架构中引入Treble机制的意义

Android 8.0系统引入了Treble机制,旨在分离硬件相关代码和Android系统框架,使得硬件抽象层(HAL)可以独立更新而不必等待整个系统升级。这一机制的引入带来了更快的硬件驱动更新速度和更简化的系统开发流程,提高了设备制造商和开发者之间的合作效率,同时也为Android系统的持续发展和优化打下了良好基础。

3.2 Binder从单一域拓展为/dev/binder、/dev/hwbinder和/dev/vndbinder三个域

在Android 8.0版本中,Binder通信机制从传统的单一域(/dev/binder)扩展到了三个域:/dev/binder、/dev/hwbinder和/dev/vndbinder。这一变化的目的在于更好地支持不同类型的Binder通信需求,提高系统的灵活性和扩展性。

  • /dev/binder:用于普通的Binder通信,适用于大多数场景。
  • /dev/hwbinder:专门用于处理硬件相关的Binder通信,例如与硬件驱动程序的通信。
  • /dev/vndbinder:为供应商定制的Binder通信提供支持,允许不同供应商定义自己的通信协议和接口。
    通过拓展Binder的域,Android系统可以更好地满足不同领域的通信需求,提升系统的通用性和可扩展性,为各种应用场景提供更加灵活和高效的进程间通信解决方案。

Android8.0及之后的Binder域
三者关系可以用如下图解释

从上面的架构图可以清晰地看出,Binder用于2个System分区进程的通信,HwBinder用于System分区进程和Vendor分区进程的通信,而vndBinder则用于2个Vendor分区进程之间的通信,使用什么Binder与分区有后很大的关系。 Android11之后,HIDL已经废弃,统一使用AIDL实现Binder。

  1. Binder架构更新细节

4.1 VndBinder和HwBinder的引入,以及它们在不同领域的应用和优势

  • VndBinder(/dev/vndbinder):VndBinder是Android 8.0中引入的一种Binder域,旨在为供应商提供定制化的Binder通信解决方案。供应商可以通过VndBinder定义自己的通信协议和接口,实现与系统其他部分的通信。这种定制化的Binder通信机制使得不同供应商能够更好地整合其硬件或服务到Android系统中,提高了系统的灵活性和可扩展性。
  • HwBinder(/dev/hwbinder):HwBinder则是专门用于处理硬件相关的Binder通信的域。Android系统中的硬件抽象层(HAL)可以通过HwBinder与硬件驱动程序进行通信,实现对硬件设备的控制和管理。HwBinder的引入使得系统能够更加高效地与硬件交互,提升了系统的稳定性和性能。
    这两种新的Binder域的引入丰富了Android系统的Binder通信机制,满足了不同领域的通信需求,同时也为供应商和开发者提供了更多定制化和优化的机会。

4.2 为什么引入HwBinder

Android 8.0引入的Treble机制在Android系统中带来了重要的改进。Treble项目通过将底层供应商实现从Android内核框架中剥离出来,实现了系统的模块化设计。这一设计使得Android更新变得更加简单,可以分别独立更新平台和供应商提供的组件,从而提高了更新的效率和速度。

然而,Treble的模块化设计不仅仅是为了方便更新和提升效率,更重要的是为了增强安全性。Treble引入了一个新的vendor.img,原先的system分区被拆分为了system分区和vendor分区。所有与SOC和供应商相关的功能实现都需要放到vendor分区中。这样一来,system和vendor相关的镜像被分开,使得系统的更新和升级变得更加方便,并且不再依赖底层的vendor等组件。

在Android 8.0之前,硬件抽象层(HAL)是以.so库的形式存在,通过dlopen进行加载。这些库和Android Framework位于同一个进程中。在过去的Android系统架构中,Android Framework和Android HAL被打包成一个system.img,并且二者之间紧密耦合,使用相应的硬件相关.so库通过链接方式进行通信。

通过Treble的引入,Android系统架构变得更加灵活和模块化。Treble的设计将平台和供应商的功能实现分离,并引入了vendor分区,使得系统的更新、升级和安全性都得到了提升。这一改进为Android生态系统的发展带来了更多的可能性,并为未来版本的优化和改进铺平了道路。

Android8.0之前的Binder通信架构
在过去,每次Android Framework的升级都需要对应的Android HAL升级,这导致供应商需要花费大量人力资源来进行Vendor HAL Implementation的升级,从而使得Android版本升级的速度变得缓慢。这也是为什么很多用户在使用几年后,仍然无法及时获得Android系统更新的原因。
然而,在Android 8.0及以后的版本中,Android引入了一套新的机制来隔离HAL层,并且引入了一种名为HIDL的语言来定义Framework和HAL之间的接口。在新的框架设计中,Android将Android Framework放置在system分区中,而Vendor HAL Implementation则放置在一个新定义的分区(Vendor.img)中。这样一来,刷新system.img不会影响到Vendor HAL Implementation。

此外,在Android 8.0及以后的版本中,HAL库和framework不再位于同一个进程中,而是通过hwbinder进行进程间通信。这一系列的改进使得Android系统的升级更加灵活、快速,并且能够更好地保持与供应商相关的组件的稳定性,从而为Android系统的持续优化和升级打下了良好的基础。

Android8.0之后引入Treble之后的Binder通信架构
4.3 新架构对Android系统整体架构和供应商服务的影响

  • Android系统整体架构影响:新的Binder架构更新拓展了Android系统的通信能力,使得不同领域的通信需求都能够得到满足。这种灵活的通信机制提高了系统的整体性能和稳定性,同时也为系统的持续优化和演进打下了坚实基础。
  • 供应商服务影响:新的Binder架构为供应商提供了更多定制化的空间,使得他们能够更好地整合自己的硬件或服务到Android系统中,并与系统其他组件进行通信和交互。这种定制化的Binder通信机制为供应商提供了更多灵活性和创新空间,有助于提升他们的服务质量和用户体验。
    总的来说,新的Binder架构更新对Android系统和供应商服务都带来了积极的影响,促进了系统的发展和优化,同时也提升了供应商的服务水平和竞争力。
  1. Binder库的代码变化

Binder和VndBinder共同使用libbinder, HwBinder使用libhwbinder,代码的目录差异如下:

servicemanager的目录差异如下:

  1. 影响与展望

6.1 Android 8.0 Binder架构更新对系统性能、稳定性和安全性的影响

  • 系统性能:新的Binder架构更新为不同领域提供了定制化的通信解决方案,使得系统在处理各种通信需求时更加高效和灵活。这有助于提升系统整体性能,减少通信开销,加快数据传输速度,并改善应用程序的响应速度。
  • 系统稳定性:通过引入VndBinder和HwBinder等新的Binder域,Android系统变得更加模块化和可扩展,降低了不同领域通信之间的干扰和冲突可能性。这有助于提高系统的稳定性,减少因通信问题引起的系统崩溃和异常情况。
  • 系统安全性:新的Binder架构更新加强了系统与供应商之间的通信安全性,通过定制化的通信协议和接口,限制了非法访问和数据泄露的可能性。这有助于提升系统的安全性,保护用户数据和隐私信息的安全。
    6.2 新Binder架构对未来Android版本发展的启示和意义

新的Binder架构更新为Android系统带来了更大的灵活性和可扩展性,使得系统能够更好地适应不断变化的硬件和服务需求。未来的Android版本可以借鉴这一架构更新,进一步优化通信机制,提升系统性能和安全性,推动Android生态系统的持续发展。

  1. 结语

Android引入了Treble机制后,新增了一个vendor分区,旨在加快系统升级的速度。为了实现System/System、System/Vendor、Vendor/Vendor之间的不同进程间通信,并对HAL层进行有效隔离,Android对原有的Binder机制进行了拆分,形成了Binder、HwBinder和VndBinder三个部分。在这其中,Binder和VndBinder共享相同的libbinder和servicemanager代码库,使用AIDL接口,但它们无法同时存在。相反,HwBinder则采用独立的libhwbinder和hwservicemanager代码库,通过HIDL接口进行管理。这三种机制相互独立运作,既便利了系统升级,又提升了系统的安全性和稳定性。

在Android 8.0中,Binder架构更新是一项重要的改进,为系统的通信机制带来了全面升级,提升了系统的性能、稳定性和安全性。开发者和用户可以从新架构中获得以下好处和改进:

  • 更快的数据传输速度和更高的系统响应性。
  • 更稳定的系统运行环境和更安全的通信机制。
  • 更灵活的定制化通信解决方案,满足不同领域的需求。
    综上所述,Android 8.0 Binder架构更新对系统和用户都带来了显著的好处,为Android系统的发展奠定了更加稳固的基础,为未来版本的优化和改进指明了方向。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/413195.html

(0)
联系我们
联系我们
分享本页
返回顶部