实际上HAL对于linux内核来说就相当于应用程序,内核驱动提供访问硬件的接口,而HAL的主要目的就是把这些接口进行封装。让用户看不到是如何操作硬件接口的。达到保密的效果。而JNI也就是native层 所做的就是将HAL包装好的接口 进行处理暴露给JAVA
======================
HAL硬件抽象层,
第一个目的是统一接口,驱动写在HAL层。 第二个目的是保护技术机密,无需开源代码。 HAL提供了统一的 注册模块,调用模块的接口。 C/C++ 在Framework中实现 调用HAL中的接口,JAVA层通过JNI来调用 C/C++接口