参考文章: 呕心沥血Android studio使用JNI实例
使用流程
- 编写Java文件
- 编译生成class文件
- 编译生成.h文件
- 编写C文件
- 配置NDK
- 配置so库
配置
local.properties
ndk.dir=D\:\\android-ndk-r14b
把ndk目录添加进去
build.gradle(Module)
defaultConfig {
applicationId "com.momingqi.jnidemo"
minSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
moduleName "hellojni"
ldLibs "log", "z", "m"
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
添加ndk配置
gradle.properties
android.useDeprecatedNdk=true
Java文件编写
public class HelloJNI
{
static{System.loadLibrary("hellojni");}
public static native String encrypt(String raw);
}
生成.h文件
使用命令:
javah -jni <完整类名>
在项目下创建一个文件夹(Folder -> jni folder),把上面生成的.h放进去。(/src/main/jni)
C文件编写
#include "com_momingqi_jnidemo_HelloJNI.h"
JNIEXPORT jstring JNICALL Java_com_momingqi_jnidemo_HelloJNI_encrypt
(JNIEnv *env, jobject object, jstring str)
{
return (*env)->NewStringUTF(env, "JNI encrypt!!");
}