Android 中使用JNI是干啥的?
具体原理不是很清楚,只知道JNI允许Java语言和c/c++语言进行交互。
项目当中如何实现?
1> 使用源码
2> 使用.so库
项目中如何使用源码?
1.1:在main目录下创建 jni folder
1.2:src目录下创建实现native方法的类
1.3:需要配置Ndk,File --> Project Structure --> Android Ndk Location中选择Ndk路径,解压选择到ndk-bundle目录
1.4:选择Build-->ReBuild Project后,在build -->intermediates --> classes --> debug 中找到.h头文件并拷贝到已创建的jni文件夹下
1.5:已创建好的jni文件夹下新建.c文件include 头文件,实现native方法,注意方法名是以 Java_包名_类名_方法名这样命名的,不可有误,否则找不到此方法
1.6:打开app下的gradle文件,defaultConfig下添加ndk{moduleName "so库名字" abiFilters "armeabi"..}
1.7: gradle.properties 文件中添加 android.useDeprecatedNdk=true
1.8: Activity中使用时,需要先加载 static{System.loadLibrary("so库名字");} 后再调用
项目中如何使用so库
2.1:so库也是源码编译生成,将so库导入到libs下对应的类型中,gradle文件中进行配置:
ndk{
abiFilters "armeabi"
}
2.2:src目录下创建实现native方法的类
2.3:Activity中使用时同上需要先加载
根据以上步骤,已实现与c语言交互的功能
因是初次使用,有问题的地方希望多包含并讨论。