1.新建工程,创建JNI调用的JAVA类,
public class JNIKey { static { System.loadLibrary("KeyJNI"); } public native String getJNIKey(); }
2.编译项目,生成JNI调用类的字节码文件,为后续生成头文件做准备
3.从Terminal终端敲命令进入app\src\main目录,键入javah -d jni -classpath D:\Android\android-sdk-windows\platforms\android-23\android.jar;../../build/intermediates/classes/debug com.jni.key.JNIKey 命令生成头文件com_jni_key_JNIKey.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_jni_key_JNIKey */ #ifndef _Included_com_jni_key_JNIKey #define _Included_com_jni_key_JNIKey #ifdef __cplusplus extern "C" { #endif /* * Class: com_jni_key_JNIKey * Method: getJNIKey * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_jni_key_JNIKey_getJNIKey (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
4.创建C主文件main.c,实现头文件中的方法
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_jni_key_JNIKey */ #ifndef _Included_com_jni_key_JNIKey #define _Included_com_jni_key_JNIKey #ifdef __cplusplus extern "C" { #endif /* * Class: com_jni_key_JNIKey * Method: getJNIKey * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_jni_key_JNIKey_getJNIKey (JNIEnv *env, jobject obj) { return env->NewStringUTF("jfshdgg-ylifefre"); } #ifdef __cplusplus } #endif #endif
5.在local.properties中配置NDK路径:
ndk.dir=D\:\\Android\\android-ndk-r11c
在gradle.properties:
android.useDeprecatedNdk=true
在build.gradle: