HAL ( Hardware Abstraction Layer,硬件抽象腔,〉是建立在Linux驱动之上的一套程序库。这套程序并不属于 Linux 内核, 而是属于 Linux 内核层之上的应用层。 Google 为 Android 增加 HAL 的主要目 的除了尽量避免应用程序直接访问 Linux 驱动外,还有一个重要原因,那就是保护 “私人财产”。Linux驱动的业务逻辑部分对击有些企业或个人并不想将源代码公开。尽管这些Linux驱动都是免费给用户使用的, 但由于这些Linux 驱动的实现涉及一些技术专利或商业秘密,如果公开源代码会有很大麻烦。但作为Linux.驱动,又不得不公开源代码。在Android层次结构中的系统运行库层增加了一个 HAL。HAL 并不是Linux 内核的一部分,而是位于Android的系统运行库层,而Android采用了 Apache Licence 2.0协议发布, Apache Licence .2.0 协议并未要求使用基于Apache Licence ·2.0协议的源代码的软件也必须开源(只要求在踪代码中说明引用的部 分以及提供Notice 文件〉。 由于 HAL属于Android 价一部分,自然也不必开源了。HAL架构比较简单,其基本原理就是在Android系统中使用程序库(.so文件)调用位于内核空间的Linux驱动(一般通过设备文件访问)。 然后android应用程序(APK文件)可以通过NDK程序访问NDK的程序库或直接使用Java代码访问。