PS:本文是建立在已经搭建好AS开发环境的基础上,用的是AS 2.3.2
1.打开AS右上角File->Settings, 进入设置界面,点击Tools->External Tools

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


再添加一个工具,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

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

4.在项目的grade.properties下添加一行

5.最后,就可以新建一个加载jni的类,build一下app, 然后在该文件下右键, 选external Tools->javah, 就可以看到在jni的目录下生成了对应的.h文件,然后在jni目录下再新建两个mk文件和一个cpp文件:
Android.mk
Application.mk
MyJniUtil.cpp(ps:这里的函数可以从javah生成的.h文件里面复制过来,在参数里面加上对象名,实现一个方法就可以了)
新建完后就可以右键jni文件夹, 选external Tools->ndk-build生成so文件包
大功告成,可以调用一下你的native方法试试了
1.打开AS右上角File->Settings, 进入设置界面,点击Tools->External Tools
2.点击右侧+号,添加一个工具,Name和Description均为javah, 在Tools settings下设置如下参数
Program: $JDKPath$/bin/javah
Parameters: -classpath $Classpath$ -v -jni $FileClass$
Working directory: $SourcepathEntry$/../jni
再添加一个工具,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
3.在项目下的app->main下new一个JNI的Folder
4.在项目的grade.properties下添加一行
android.useDeprecatedNdk=true在app的build.gradle的android的defaultConfig下添加
ndk{
moduleName "MyJniUtil"
}
sourceSets.main{
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
}
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方法试试了