NDK入门

1、安装NDK开发工具:进入Android Studio->Preferences->Android SDK->SDK Tools,找到NDK安装:
NDK入门_第1张图片

2、新建project,在gradle.properties中加入

android.useDeprecatedNdk=true

在app中的build.gradle的defaultConfig中加入

ndk {
            moduleName "JNISample"
            stl "stlport_static"
            ldLibs "log"
        }

3、创建JNIUtils类,声明一个native方法:

public native int add(int a,int b);

build工程,生成build/intermediates/classes/debug文件夹
在Terminal中cd到debug文件夹,执行命令:

javah -jni com.yjs.ndkdemo.JNIUtils  

会在dubug文件夹下生成c++头文件:
NDK入门_第2张图片
内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class com_yjs_ndkdemo_JNIUtils */

#ifndef _Included_com_yjs_ndkdemo_JNIUtils
#define _Included_com_yjs_ndkdemo_JNIUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_yjs_ndkdemo_JNIUtils
 * Method:    add
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_yjs_ndkdemo_JNIUtils_add
  (JNIEnv *, jobject, jint, jint);

4、在main文件夹下创建一个jni文件夹,并将上一步生成的头文件拷贝到jni中,
然后在jni中创建.cpp文件:
这里写图片描述

在其中实现头文件的方法:

JNIEXPORT jint JNICALL Java_com_yjs_ndkdemo_JNIUtils_add(JNIEnv *env, jobject obj, jint a, jint b) {
    return (a + b);
}

5、调用native方法:
首先在声明native方法的类中加入

 static {
        System.loadLibrary("JNISample");
    }

其中”JNISample”和你在app的build.gradle中声明的ndk的moduleName一致。
之后便可以调用native方法:

 JNIUtils jniUtils = new JNIUtils();
 Log.d("JNIUtils", String.valueOf(jniUtils.add(1,2)));

你可能感兴趣的:(ndk)