一、安装NDK
1. 在菜单栏选择File -> Settings -> Appearance & Behavior -> System Settings -> Android SDK -> SDK Tools选中LLDB和NDK,点击【Apply】按钮后,Android Studio会提示安装NDK。
2. 点击【OK】按钮安装NDK,( 如果第一次安装NDK失败,重复第一步就可以 )
3. NDK的默认安装路径:Android SDK 路径\ndk-bundle 文件夹
二、JNI项目建立
1. 新建一个工程File -> New -> New Project
2. 在main文件夹下新建一个jni目录File -> New -> Directory
3. 在jni目录下新建一个 hello-jni.c文件File -> New -> C/C++ Source File
4. 在hello-jni.c 中编写c代码
#include <jni.h> //jstring: 返回值类型 String //规则: Java_包名_类名_方法名(jvm虚拟机的指针,调用者对象) jstring Java_com_tengmuz_jnidemo_MainActivity_hellojni(JNIEnv* env,jobject thiz) { return (*env)->NewStringUTF(env, "Hello,JNI. 你好,JNI !!!"); }
5. 在jni目录下新建android.mk文件File -> New -> File,并添加以下内容:
#指定编译的文件夹 指定当前文件目录 LOCAL_PATH := $(call my-dir) #编译器会定义很多的临时变量,中间变量,最好清空所有的中间变量。 include $(CLEAR_VARS) #编译出来模块的名称 LOCAL_MODULE := hello-jni # 编译的源代码的名称 LOCAL_SRC_FILES := hello-jni.c #编译一个动态库,静态库 #静态库 文件名.a 包含所有的函数并且函数运行的依赖,体积大,包含所有的API #动态库 文件名.so 包含函数,不包含函数运行的依赖,体积小,运行的时候,去操作系统寻找需要的API include $(BUILD_SHARED_LIBRARY)
6. 在build.gradle中配置
externalNativeBuild { ndkBuild { path file("src\\main\\jni\\Android.mk") } }
7. 点击 Make Project(或Ctrl+F9) 即可生成.so文件(路径: app\build\intermediates\ndk-build)
三、 JAVA调用JNI
1. 在MainAvtivity加载JNI动态链接库,添加以下代码:
static{ //System.loadLibrary("库文件名称不带前缀,后缀名"); System.loadLibrary("hello-jni"); }
2. 声明native的方法
public native String hellojni();
3. 调用native的方法,使用Toast来提示内容
String str = hellojni(); Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
4. JNIDemo测试效果
5. JNI工程源代码
共有 0 条评论