天天看点

Android Studio下的NDK开发(一):环境配置

1、新建项目,如图所示

Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置

2、配置NDK开发环境

点击左上角的SDK Manager,下载ndk工具。

Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置

下载完成后在gradle.properties中添加如下一行代码

android.useDeprecatedNdk=true      
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置
在build.gradle中添加如下一段代码,意思是生成的.so库名为JniTest.so      
ndk{
    moduleName "JniTest"
}      
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置

3、在java目录下新建JniUntil类,内容如下

public class JniUntil {
    public native String getString();

    static {
        System.loadLibrary("JniTest");//加载.so库
    }
}      

4、把工程视图切换成project,在main目录下新建文件夹jni和jniLibs,jni是用来存放C/C++文件的,而jniLibs则是用来存放.so库文件的

Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置

再在jni文件下新建JniTest.c和JniTest.h文件,内容如下 JniTest.c

#include "JniTest.h"

JNIEXPORT jstring JNICALL Java_com_jnitest_JniUntil_getString
        (JNIEnv *env, jobject obj){
    return (*env)->NewStringUTF(env,"努力学习,天天向上");
}      

JniTest.h

#ifndef JNITEST_JNITEST_H
#define JNITEST_JNITEST_H

#endif

#include <jni.h>

#ifndef _Included_com_jnidemo_JniUntil
#define _Included_com_jnidemo_JniUntil
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jstring JNICALL Java_com_jnidemo_JniUntil_getString
        (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif      
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置

5、生成库文件

点击Build->Rebuild生成.so文件,在如下目录

Android Studio下的NDK开发(一):环境配置
Android Studio下的NDK开发(一):环境配置

复制 粘贴到jniLibs文件夹中

Android Studio下的NDK开发(一):环境配置

6、在MainActivity中调用

Android Studio下的NDK开发(一):环境配置

运行结果如下

Android Studio下的NDK开发(一):环境配置

7、源码链接

https://github.com/Hasagit/JniDemo.git