主要讲一下Android Studio中NDK的简单使用
- 编译生成so包
- 在项目中使用生成的so包
1.编译生成so包
1.1Android Studio可以在setting中自动下载NDK包
勾选LLDB和NDK
1.2 在gradle.properties中添加android.useDeprecatedNdk=true,支持NDK
1.3新建一个类,用来声明一个原生的方法:
public class NdkJniUtils {
static {
System.loadLibrary("YanboberJniLibName"); //defaultConfig.ndk.moduleName
}
public native String getCLanguageString();
}
这里的loadlibrary是用来加载so包的,可以暂时忽略,后面说
1.4 头文件生成
cmd进入到该文件路径下/ Android studio Terminal 定位到 src/main/java ;
然后javah +com…(报名+类名
这样会在src目录下生成一个.h头文件,这个文件的作用类似于接口,进行方法说明
1.5 实现c/c++文件
include .h文件,并把方法名拷过去,进行实现内容
1.6 配置gradle文件
在defaultConfig 中加入
ndk{
moduleName "test" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库
}
至此,编译 就可以得到so包了,位置在app/build/intermediates/ndk/debug/lib
- 直接使用so包
一种情况就是可以直接使用上面的方法来进行jni使用,还有一种情况就去掉C/C++代码,直接用so包,可以简化代码。
介绍直接使用so包
将生成的so全部拷入libs文件夹下,在gradle中奖ndk{}配置删除,在Android{}下引入
sourceSets{
main {
jniLibs.srcDirs=['libs']
}
}
同时也可以删除c/c++代码啦!
ps:遇到各种奇怪的异常,记得先clean一下。