NDK开发(一)

2017-05-08  本文已影响20人  caym

以下内容均使用AndroidStudio开发

一、ndk环境配置

ndk下载:
http://developer.android.com/tools/sdk/ndk/index.html
选择对应的版本,下载解压即可使用。

Paste_Image.png Paste_Image.png

二、建立ndkdemo

创建工程

Paste_Image.png

建立对应的类,并增加静态native方法,这里创建一个加法方法为例。

生成.h文件

使用命令行生成java类对应的头文件
注意类名没有.java后缀

javah -jni com.lib.ndk.MathUtil

在main目录下生成jni文件夹

Paste_Image.png

把刚生成的.h文件拉到jni目录下,并实现相应的.cpp

Paste_Image.png

.h文件:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_lib_ndk_MathUtil */

#ifndef _Included_com_lib_ndk_MathUtil
#define _Included_com_lib_ndk_MathUtil
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_lib_ndk_MathUtil
 * Method:    sum
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_lib_ndk_MathUtil_sum
  (JNIEnv *, jclass, jint, jint);

#ifdef __cplusplus
}
#endif
#endif

.cpp文件:

#include <com_lib_ndk_MathUtil.h>
JNIEXPORT jint JNICALL Java_com_lib_ndk_MathUtil_sum
  (JNIEnv *env, jclass cls, jint a, jint b){
    return a+b;
  }

设置项目的build.gradle文件
设置jni名称为:JniDemo,并生成各个架构so


Paste_Image.png

在module中的gradle.properties(如无则创建)添加:

android.useDeprecatedNdk=true

编译

Build->MakeProject

Paste_Image.png

使用

把so拷贝至需要使用项目中的jniLibs目录下
在程序启动的同时调用

System.loadLibrary("JniDemo");//库名

一般使用静态自由块保证在装载的同时加载so库

 static {
        System.loadLibrary("JniDemo");//库名
    }

在java层使用静态方法调用即可:

MathUtil.sum(1,2);
上一篇 下一篇

猜你喜欢

热点阅读