Android引入HAL层的原因:
HAL层的优势我们在前面已经提到,这是其中之一,另一个重要的原因就是为了保障在Android 平台基于Linux开发的硬件驱动和应用程序不必遵循GPL(General Public License)许可而保持封闭,保证硬件厂家的利益。我们都知道, Linux Kernel和Android的许可证不一样,Linux Kernel遵循的是GPL许可,Android遵循的是ASL(Apache SoftWare License)许可,ASL许可规定,可以随意使用源码,不必开源,所以建立在Android之上的硬件驱动和应用程序都可以保持封闭。也就是说,只要把 关键的驱动处理相关的主要逻辑转移到Android平台内,在Linux Kernel中国仅保留基础的通信功能,原本应该包括在Linux Kernel中的某些驱动的关键处理逻辑,被转移到了HAL层,保证了硬件厂家的利益的同时,也方便了软件的开发。
HAL层是硬件抽象层,安卓把硬件的接口放在了kernel层,把相应的逻辑放在了HAL层,安卓的kernel层驱动,和HAL层的驱动简称系统驱动。小公司一般没有把HAL和kernel分开,但是大公司分工比较细,会把kernel层的开发和HAL层的开发分开,kernel是用C语言,HAL是以C++为主。