如何自己手动创建一个GNI的库

本文档详细介绍了如何从头开始创建一个GNI(Generic Native Interface)库,通过jkren-jni.c源文件和Android.mk构建文件的配置,阐述了在Android环境下编译和链接本地代码的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手动创建一个GNI的库的必要性:
    随着android 定制化的全面到来android 的apk 在必要的时候需要直接操作linux 的驱动接口,
比如代表作:拉卡拉刷卡器。当然还有直接在系统里面也可以添加gni 和android应用层的API接
口,但是不利于第三方的独立开发。
 
手动创建一个gni的实例:
1、在android source 里面创建一个目录“ gni”,然后再 gni的目录里面创建文件 jkren-jni.cAndroid.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就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值