Android的接口和架构
Android的接口和架构在该文献/devices/index.html应用程序框架/devices/index.html活页夹IPC/devices/index.html系统服务/devices/index.html硬件抽象层(HAL)/devices/index.html标准HAL结构/devices/index.htmlHAL模块/devices/index.htmlLinux内核机器人给你实现你自己的设备规格和驱动程序的自由。硬件抽象层(HAL)提供了Android平台栈和硬件之间创建软件挂钩的标准方法。Android操作系统也是开源的,所以你可以贡献自己的接口和增强功能。为了确保设备保持质量的高水准,并提供一致的用户体验,每一个设备都必须通过测试,兼容性测试套件(CTS)。在CTS验证设备符合质量标准,以确保应用程序可靠地运行和用户有良好的体验。有关CTS的详细信息,请参阅?/compatibility/index.html兼容性。之前的Andr??oid移植到你的硬件,花点时间去了解Android系统架构在一个较高的水平。因为你的驱动程序和HAL与Android进行互动,了解如何Android的作品能够帮助您浏览代码的多层次的Andr??oid开源项目(AOSP)的源代码树研究。图1.?Android系统架构应用程序框架应用程序框架是最常用的应用程序开发者。作为一个硬件开发者,你应该知道开发商的API许多直接映射到底层的HAL接口,并能提供有关实现驱动程序的帮助信息。活页夹IPC活页夹进程间通信(IPC)机制允许应用程序框架,跨越进程边界和调用到Android系统的服务代码。这使得高层框架API与Android系统服务进行交互。在应用程序框架层,这种通信是从开发人员隐藏起来,事情似乎“只是工作。”系统服务功能通过应用程序框架API公开与系统服务进行通信,以访问底层的硬件。服务是模块化的,重点部件,如窗口管理器,搜索服务,或者通知管理器。Android包括两类服务:系统(服务,如窗口管理器和通知管理器)和媒体(参与演奏和录制媒体服务)。硬件抽象层(HAL)硬件抽象层(HAL)定义了硬件厂商实现一个标准接口,并允许机器人是不可知约低级别的驱动程序实现。该HAL,您可以实现的功能,而不会影响或修改更高级别的系统。HAL实现被打包成模块(的.so)文件,并通过Android系统在适当的时候加载。图2.硬件抽象层(HAL)组件您必须执行相应的HAL(和驱动程序)的特定硬件产品提供。HAL的实现通常内置共享库模块(的.so文件)。Android不强制你HAL实施和设备驱动程序之间的标准的互动,让你有自由支配做什么是最适合你的情况。然而,为了使Android系统正确地与硬件交互,你必须在每个特定于硬件的HAL接口定义的信守合同。标准HAL结构每个特定于硬件的HAL接口所定义的属性?硬件/ libhardware /有/硬件/?hardware.h,这保证的HAL具有可预测的结构。该接口允许Android系统加载你的HAL模块的正确版本以一致的方式。有一个HAL接口由两个通用部件:一个模块和设备。一个模块代表了打包的HAL实现,存储为一个共享库(.so?文件)。它包含元数据,如版本,名称和作者的模块,这有助于Android的发现并正确加载它。在?硬件/ libhardware /有/硬件/ hardware.h头文件中定义了一个结构,hw_module_t,代表一个模块中包含的信息,如模块版本,作者,和名称。此外,hw_module_t结构包含一个指向另一个结构,hw_module_methods_t,它包含一个指向一个“开放的”功能模块。这次公开功能用于启动与该HAL被用作用于一个抽象的硬件通信。每个特定硬件的HAL通常扩展了通用的hw_module_t结构与其他信息为特定的硬件。例如,在相机的HAL,所述camera_module_t结构包含一个hw_module_t连同其他摄像机专用函数指针结构:的typedef 结构camera_module {hw_module_t common ; int (* get_number_of_cameras )( void ); int (* get_camera_info )( int camera_id , struct camera_info * info ); } camera_module_t ;当你实现一个HAL和创建模块结构,则必须将其命名为?HAL_MODULE_INFO_SYM。例如,下面是从Nexus的9音频HAL的例子:结构audio_module Tegra的音频 HAL“,。笔者= 的Android开源项目 ”“,。方法 =&ha