一、配置NDK环境
File--Setting--Appearance&Behavior--System Settings--Android SDK--SDK Tools--NDK---OK右击项目---Open Model Setting---SDK Location--Android NDK location(D:\installTools\sdk\ndk-bundle)
在local.properties里面加入ndk.dir=D\:\\installTools\\SDK\\ndk-bundle
配置ndk系统环境变量:
NDK_ROOT
D:\installTools\SDK\ndk-bundle
Path
%NDK_ROOT%;
public class JniKit {
public static native int calculate(int num);
static {
System.loadLibrary("JniDemo");
}
}
三,生成调用本地方法的.h头文件。用AndroidStudio中的Terminal工具来生成。
命令如下:
进入你项目的java文件夹下
cd app/src/main/java
com.lh.jni是你的完整包名,后面跟具体写有调用c代码的java类
javah -jni com.lh.jni.JniKit
File--Folder--JNI Folder
New--C/C++ Source file
include中指向你创建的.h头文件
Java_com_lh_jni_JniKit_calculate;Java_包名类名方法名(参数)
#include <com_android_read_JniKit.h>
JNIEXPORT jint JNICALL Java_com_android_read_JniKit_calculate(JNIEnv *env, jclass cls, jint num) {
return num * num;
}
七,在as中配置生成so文件的信息。
在build.gradle文件中配置
defaultConfig {
applicationId "com.android.read.usb"
minSdkVersion 25
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk{
moduleName "jniDemo" //生成的so名字
cFlags "-DANDROID_NDK -D_RELEASE"
ldLibs "m","log","jnigraphics"// LOCAL LDLIB
abiFilters "armeabi-v7a","armeabi","x86"//输出指定三种abi体系结构下的so库
stl "stlport_shared"//app stl
}
}
八、Build--Make Project生成so文件,然后运行项目。
(1)生成的文件在build--intermediates--ndk--debug--lib目录下
(2)在src目录新建个jniLibs的目录
(3)把lib目录下的所有目录及文件copy到新建的jniLibs的目录下
在build.gradle文件中配置
sourceSets {
main {
jni.srcDirs = ['src/main/jni', 'src/main/jni/']
jniLibs.srcDirs 'src/main/libs'//路径为so文件的路径
}
}