PS:本文是建立在已经搭建好AS开发环境的基础上,用的是AS 2.3.2

1.打开AS右上角File->Settings, 进入设置界面,点击Tools->External Tools

Android Studio NDK环境搭建

2.点击右侧+号,添加一个工具,Name和Description均为javah, 在Tools settings下设置如下参数
Program:    $JDKPath$/bin/javah
Parameters:    -classpath $Classpath$ -v -jni $FileClass$
Working directory:    $SourcepathEntry$/../jni

Android Studio NDK环境搭建

Android Studio NDK环境搭建

再添加一个工具,Name和Description均为ndk-build, 在Tools settings下设置如下参数
Program:    /home/cjx/Android/Sdk/ndk-bundle/build/ndk-build       (/home/cjx/Android/Sdk/ndk-bundle/是我当前android SDK的路径,具体根据自己当前电脑的实际路径而定)
Working directory:   $ModuleFileDir$/src/main

Android Studio NDK环境搭建

3.在项目下的app->main下new一个JNI的Folder

Android Studio NDK环境搭建

4.在项目的grade.properties下添加一行 
android.useDeprecatedNdk=true
在app的build.gradle的android的defaultConfig下添加
ndk{
    moduleName "MyJniUtil"
}
sourceSets.main{
    jni.srcDirs = []
    jniLibs.srcDir "src/main/libs"
}
Android Studio NDK环境搭建

5.最后,就可以新建一个加载jni的类,build一下app, 然后在该文件下右键, 选external Tools->javah, 就可以看到在jni的目录下生成了对应的.h文件,然后在jni目录下再新建两个mk文件和一个cpp文件:
Android.mk


LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyJniUtil
LOCAL_SRC_FILES =: MyJniUtil.cpp
include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_MODULES := MyJniUtil
APP_ABI := all

MyJniUtil.cpp(ps:这里的函数可以从javah生成的.h文件里面复制过来,在参数里面加上对象名,实现一个方法就可以了)

#include "com_example_cjx_kotlintest_jnitest_JniUtil.h"

JNIEXPORT jstring JNICALL Java_com_example_cjx_kotlintest_jnitest_JniUtil_getValues
        (JNIEnv * env, jclass obj)
{
    return (*env).NewStringUTF("jni test success");
}

新建完后就可以右键jni文件夹, 选external Tools->ndk-build生成so文件包

大功告成,可以调用一下你的native方法试试了



相关文章: