HIDL设计
HIDL设计的目的是想把Framework层与Hal层进行隔离,使Framework层可以直接被覆盖更新,而不需要重新对HAL层进行编译。HAL的部分将会放在/vendor分区中,并且由设备供应商或SOC制造商来构建,这使得Framework部分可以通过OTA方式更新,同时不需要重新编译HAL。
之前将打开库hw_get_module等调用Hal层操作放在JNI服务中(Framework里的Native层),现在将这些操作放在HIDL服务里,然后在JNI服务中通过HIDL服务调用到Hal层的东西。
在Android O之前,HAL是一个个的.so库,通过dlopen来进行打开,库和framework位于同一个进程:
在Android O之后,framework和hal运行于不同的进程,所有的HAL采用新的HIDL技术来完成: