手动创建一个GNI的库的必要性:
随着android 定制化的全面到来android 的apk 在必要的时候需要直接操作linux 的驱动接口,
比如代表作:拉卡拉刷卡器。当然还有直接在系统里面也可以添加gni 和android应用层的API接
口,但是不利于第三方的独立开发。
手动创建一个gni的实例:
1、在android source 里面创建一个目录“
gni”,然后再
gni的目录里面创建文件
jkren-jni.c 和
Android.mk
jkren-jni.c
define LOG_TAG "jkren-jni"
#include <string.h>
#include <jni.h>
#include <fcntl.h>
/*包括文件操作,如open() read() close() write()等*/
//----for output the debug log message
//#include <android/log.h>
#include <cutils/log.h>
jstring
Java_com_auly_control_vibClass_stringFromJNI( JNIEnv* env,jobject thiz ){
return (*env)->NewStringUTF(env, "Hello from JNI--Peter for vib!");
}
jint
Java_com_auly_control_vibClass_Init( JNIEnv* env ){
LOGE("vibClass_Init()\n");
return 1;
}
jint
Java_com_auly_control_vibClass_IOCTLVIB( JNIEnv* env, jobject thiz, jint controlcode ){
int CTLCODE = controlcode;
LOGE("IOCTLVIB() = %x --vibClass_IOCTLVIB\n",CTLCODE);
return 1;
}
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := vib-jni
LOCAL_SRC_FILES := vib-jni.c
LOCAL_CFLAGS := -Werror
LOCAL_SHARED_LIBRARIES :=liblog
#libc libutils
LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY)
2、编译:
直接在在 source/jni/ 目录下mm就可以了。