前言
项目需要jni开发,记录一下整体的流程。
1.开发的环境,需要CMake、LLDB、NDK
2.1创建project,并在main目录下创建jni目录
创建后如下图所示:
2.2创建JNI交互类
public class JniUse {
static {
System.loadLibrary("JniUse");
}
public native String getString();
}
2.3 接下来需要生成.h文件,即头文件,采用工具生成:打开File->setting->Tools->External Tools
点击“+”号,按照图片中所示输入:
其中:
Program:$JDKPath$\bin\javah.exe
Parameters:-classpath . -jni -d $ModuleFileDir$\src\main\jni $FileClass$
Working directory:$ModuleFileDir$\src\main\Java
输入完毕后,确认保存。此时:右键JNI类,选择External Tools可发现创建的javah,点击javah,可在jni文件中生成头文件。
如下图所示:
2.4 .1创建JniUse.cpp文件
其内容可为:(其中的头文件以及方法名需要根据自己项目包名、类名的实际情况而改动)
#include <com_jniuse_JniUse.h>
JNIEXPORT jstring JNICALL Java_com_jniuse_JniUse_getString(JNIEnv * env, jobject jobject){
return (*env).NewStringUTF("正在调用JNI内容");
}
2.4.2 创建Android.mk
其内容可为:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := JniUse
LOCAL_SRC_FILES =: JniUse.cpp
include $(BUILD_SHARED_LIBRARY)
2.4.3 创建Application.mk
其内容为:
APP_ABI := all
3.配置app目录下的build.gradle
其内容可为:
ndk{
moduleName "JniLib"
}
sourceSets.main{
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
}
4.生成.so文件,打开终端cd到项目的jni目录,然后输入ndk-build,执行
可在目录中发现多出了libs和odj文件,其so文件就在libs目录下
5.运行程序:在Activity中执行
JniUse jniUse = new JniUse();
Log.d("JNI条用",jniUse.getString()+"");