一、下载NDK资源文件
1、 下载地址:http://www.androiddevtools.cn/,android开发很多常用的工具都可以在这个网站上下载
2、解压NDK下载文件,配置NDK环境
在Path路径的后面追加分号然后将ndk路径配置上去就OK了
3、在android studio中配置ndk路径
4、测试NDK是否配置成功
在命令行中输入ndk-build,如下表示配置成功
二、新建一个项目,在app的build.gradl下加入
1、
defaultConfig { applicationId "com.example.sky.myndk" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk { moduleName "MyNdk"//生成的so名字 ldLibs "log", "z", "m"//链接时使用到的库 abiFilters "armeabi", "armeabi-v7a", "x86","arm64-v8a","x86_64"//输出指定五种种abi体系结构下的so库,也可以根据自己需求生成所需要的对用so库 } }
defaultConfig {
applicationId "jni.svse.com.jnitest2"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk{
moduleName "NDKDEMO" //生成的so名字
ldLibs "log", "z", "m" //链接时使用到的库
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无
}
}
2、在gradle.properties里添加
android.useDeprecatedNdk=true
3、在main下新建一个JNI文件夹
4、新建一个调用的C++的类
public class MyNative {
static {
System.loadLibrary("MyNdk");//MyNdk可以随便取,但是必须和moduleName "MyNdkO"的名字一样
}
public static native String GetData();
}
static {
System.loadLibrary("MyNdk");//MyNdk可以随便取,但是必须和moduleName "MyNdkO"的名字一样
}
public static native String GetData();
}
此时GetData会出现红色,不要紧,Alt+Enter,android studio会在jni下自动帮你生成MyNd.c
#include <jni.h>,如下
#include <jni.h>,如下
JNIEXPORT jstring JNICALL
Java_com_example_sky_myndk_MyNative_GetData(JNIEnv *env, jclass type) {
Java_com_example_sky_myndk_MyNative_GetData(JNIEnv *env, jclass type) {
// TODO
return (*env)->NewStringUTF(env, "12315");//这里可以添加你自己想要的逻辑代码
}
最后gradle编译下,再重新
就可以生成so库了。
在
得到生成的so文件
注意在建类引用so库时必须和生成的包名一致才能成功调用