1,新建一个项目,跟平时一样,不需要特殊处理
2,在项目名称上右键单击,选择open module settings ,在弹出的对话框中,左侧选择sdk location ,右侧设置ndk的本地路径
3,新建一个类,用来声明本地方法,如JniUtil
package cn.bio.biojnitest2; /** * Created by zeqili on 2017/10/24. */ public class JniUtil { public static native String getNativeString(); }4,选择android studio 的build菜单下的make project,编译项目,Java文件会被编译成对应的class文件
5,使用javah命令,根据JniUtil的class文件,生成头文件,使用终端进入app\build\intermediates\classes\debug目录下,执行如下命令
javah cn.bio.biojnitest2.JniUtil这样会在app\build\intermediates\classes\debug目录下生成.h的头文件
6,在main下新建jni文件夹,src上右键new,选择folder,选择jnifolder,默认建在main下
7,将生成好的头文件拷贝到jni文件夹,复制一份成.c文件,在.c文件中实现头文件中的本地方法,示例代码如下
#include "cn_bio_biojnitest2_JniUtil.h" JNIEXPORT jstring JNICALL Java_cn_bio_biojnitest2_JniUtil_getNativeString (JNIEnv *env, jclass obj){ return (*env) -> NewStringUTF(env,"haha,huhu,hehe"); }8,在jni文件夹下创建Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello //这个名字随便起,在JniUtil文件中使用System.loadLibray方法引用这个名字 LOCAL_SRC_FILES := cn_bio_biojnitest2_JniUtil.c //这个名就是你自己实现的c文件 include $(BUILD_SHARED_LIBRARY)9,在jni文件夹下创建Application.mk文件
APP_PROJECT_PATH := <path to project>10,在app下的build文件中添加如下内容,添加到android标签内
externalNativeBuild { ndkBuild { path file("src\\main\\jni\\Android.mk") } }11,补全JniUtil的代码,静态引入链接库
package cn.bio.biojnitest2; /** * Created by zeqili on 2017/10/24. */ public class JniUtil { static { System.loadLibrary("hello"); } public static native String getNativeString(); }
12,调用本地方法,完活
package cn.bio.biojnitest2; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(this,JniUtil.getNativeString(),Toast.LENGTH_LONG).show(); } }