ndk 环境配置
环境变量配置
将你的ndk 路径配置到 系统环境变量中
配置是否成功
显示下面信息表示ndk 配置成功
Androidstudio 环境配置如下
下面是一个 小例子
一、JNI应用
1、在AS中新建一个Project,然后再新建一个class为JniUtils ,在内部声明native方法。
public class JniUtils {
public native String getName();
public native int getAdd(int x, int y);
}
2.编译 生成class 文件
生成文件如下:
然后再 Terminal 切换到 debug 目录 如下:
然后执行如下javah命令生成h文件。 javah -jni 报名+ 类名
例如: javah -jni model.jnidemo.JniUtils
生成如下文件:
将文件拷贝到 jni 文件夹下 如果没有创建一个 调用系统自动生成的
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class model_jnidemo_JniUtils */
#ifndef _Included_model_jnidemo_JniUtils
#define _Included_model_jnidemo_JniUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: model_jnidemo_JniUtils
* Method: getName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_model_jnidemo_JniUtils_getName
(JNIEnv *, jobject);
/*
* Class: model_jnidemo_JniUtils
* Method: getAdd
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_model_jnidemo_JniUtils_getAdd
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
然后创建一个 .c文件 例如 test.c
//
// Created by SSQ on 2017/8/22.
//
#include "model_jnidemo_JniUtils.h"
JNIEXPORT jstring JNICALL Java_model_jnidemo_JniUtils_getName
(JNIEnv * env, jobject obj){
return (*env)->NewStringUTF(env,"我是一个Android Studio NDK JNI开发的程序!");
}
/*
* Class: model_jnidemo_JniUtils
* Method: getAdd
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_model_jnidemo_JniUtils_getAdd
(JNIEnv * env, jobject obj, jint a, jint b) {
int sum=a+b;
return sum;
}
AndroidStudio 配置 如下:
![](https://images2017.cnblogs.com/blog/509982/201708/509982-20170822214932714-1350742112.png)
![](https://images2017.cnblogs.com/blog/509982/201708/509982-20170822215002308-897231002.png)
然后 构建程序 生成文件 如下
到此so 文件生成完成
二 Jni 文件的引用
创建 相同包名的文件 相同类名的文件 JniUtils
并加入 System.loadLibrary("JniDemo2"); 这里的JniDemo2 与so 上面的名称相同 moduleName "NdkJniDemo" //生成的so名字
package model.jnidemo;
/**
* Created by wjd on 2017/8/22.
*/
public class JniUtils {
public native String getName();
public native int getAdd(int x, int y);
static {
System.loadLibrary("JniDemo2"); //defaultConfig.ndk.moduleName
}
}
配置文件如下:
到此结束
网上还有 两种 配置 方法 有兴趣 可以自己查看下 不过 个人觉得 我使用的还可以 。