AndroidStudio编写JNI文件

JNI---Java Native Inerface

1、编写 .java类

packagecom.vione.utils;

public class TestUtil {

static{

System.loadLibrary("testUtil");

}

public native String stringTest(String str);

}

2、根据.java类生产.h文件

(1)进入java目录 cd D:\AndroidStudioProjects\vione\app\src\main\java

(2)执行 javah -d ../jni com.vione.utils.TestUtil

AndroidStudio编写JNI文件_第1张图片

com_vione_utils_TestUtil.h

AndroidStudio编写JNI文件_第2张图片

3.编写.c文件

com_vione_utils_TestUtil.c

#include

JNIEXPORT jstring JNICALL Java_com_vione_utils_TestUtil_stringTest

(JNIEnv *env,jobject obj,jstring string) {

return string;

};

4.在jni目录下添加Android.mk文件(必须是这个名称Android.mk)文件

AndroidStudio编写JNI文件_第3张图片

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := demo //要生成的so库的名称,但实际为libdemo.so

LOCAL_SRC_FILES := demo.c //要使用的文件,刚才编写的demo.c文件

include $(BUILD_SHARED_LIBRARY)

5.编译so文件(必须配置ndk环境变量)

执行命令ndk-build

AndroidStudio编写JNI文件_第4张图片

两个必要设置

1、在local.properties中设置NDK路径,也可以AndroidStudio中设置,我的NDK示例如下:

2、在app的build.gradle的android节点下设置:

AndroidStudio编写JNI文件_第5张图片

这两处必要的地方该修改完毕后就可以调用我们生成的so文件了。

6.使用so文件

(1)可以拷贝到相应的引用文件中

(2)在TestUtil.java 文件loadLibrary方法

AndroidStudio编写JNI文件_第6张图片

7、其他

在gradle.properties中添加 Android.useDeprecatedNdk=true

在build.gradle(app)中添加

sourceSets {

main{

jniLibs.srcDirs= ['libs']

jni.srcDirs= []

}

}

你可能感兴趣的:(AndroidStudio编写JNI文件)