HAL(Hardware Abstract Layer)硬件抽象层。主要目的在于将硬件抽象化。硬件抽象化可以隐藏特定平台的硬件接口细节,为上面一层提供固定统一的接口,使其具有硬件无关性。这是从软件设计角度看。
Android HAL 安卓硬件抽象层。android系统采用分层结构,HAL层位于kernel和framework层之间,除了软件设计要素外,还有一些其它因素。比如版权/保护厂家利益因素。
Android基于Linux内核实现,Linux是GPL许可,即对源码的修改都必须开源,而Android是ASL许可,即可以随意使用源码,无需开源,因此将原本位于kernel的硬件驱动逻辑转移到Android平台来,就可以不必开源,从而保护了厂家的利益。因此Android就提供了一套访问硬件抽象层动态库的接口,各厂商在Android的硬件抽象层实现特定硬件的操作细节,并编译成so库,以库的形式提供给用户使用。(Android是一个开放的平台,并不是一个开源的平台。)