HAL层,即硬件抽象层,是Google响应厂家希望不公开源码的要求而推出。它给Android的JNI层提供接口让其调用,而不需要公布源码,从而达到保密功能。
struct hw_module_methods_t my_led_hal = {
//定义
hw_module_methods_t 结构体
open : led_open,//里面添加Java与c/c++对接的方法
};
struct led_hal_module_t HMI = { 必须要这个变量HMI
common : {
tag : HARDWARE_MODULE_TAG,
version_major : 1,
version_minor : 0,
id : LED_HAL_MODULE_ID,
name : "myhal",
//名字
author : "*************",
//作者
methods : &my_led_hal,
},
};
编译HAL的Makefile.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SHARED_LIBRARIES := \
libcutils \
libhardware
LOCAL_SRC_FILES := led_hal.c
LOCAL_MODULE := led_hal.default
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
include $(BUILD_SHARED_LIBRARY)