Android底层开发之路-AS中快速使用JNI调用C语言

Android底层开发之路-AS中快速使用JNI调用C语言

1、创建jni目录

在这里插入图片描述
在man中右键新添加目录 目录名jni

2、添加源文件

在这里插入图片描述

Android.mk如下

LOCAL_PATH := $(call my-dir)

# our own branch needs these headers
include $(CLEAR_VARS)

#LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../include

LOCAL_LDLIBS:= -llog

LOCAL_SRC_FILES := $(LOCAL_PATH)/UacHid.c \



LOCAL_MODULE := UacHid.default
include $(BUILD_SHARED_LIBRARY)
# ================================

UacHid.c如下

//C file for SystemInformation
//YBSzhang
//2020.12.17

#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <jni.h>
#include <fcntl.h>
#include <unistd.h>






//描述:获取目前设备的sn号。
JNIEXPORT jstring JNICALL Java_tech_oom_idealrecorder_USBHidStatusThread_readhidstatus
        (JNIEnv *env, jobject obj) {

	const char  buf[100] = "helloworld!~";


    return  (*env)->NewStringUTF(env,buf);
}

值得注意的点就是一个:
Java_tech_oom_idealrecorder_USBHidStatusThread_readhidstatus

命名规则为调用这个函数的java文件的包名+文件名+函数名
我这里的调用它的包名为:tech.oom.idealrecorder
文件名为:USBHidStatusThread
函数名为:readhidstatus
加载的动态库名字如Android.mk中为UacHid.default.so
在这里插入图片描述

3、配置文件修改

externalNativeBuild {
//        cmake {
//            path "src/main/cpp/CMakeLists.txt"
//            version "3.10.2"
//        }
        ndkBuild {
             path '/home/dexing/AndroidStudioProjects/IdealRecorder/IdealRecorder/library/src/main/jni/Android.mk'
            //path 'C:/Users/dell/Desktop/AS_project/fistjni/app/src/main/cpp/NEW_HAL/hal/Android.mk'
        }
    }

在build.gradle中的android下添加如上配置;
修改刚添加的Android.mk的绝对路径即可

ok结束~这个只是添加单个文件的方法。
后期会介绍如果jni是个庞大的结构
需要怎么配置,最后生成更多库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漂泊在海上的星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值