jni在Android studio中的配置和使用(一)
来源:互联网 发布:linux rpm文件 编辑:程序博客网 时间:2024/06/05 01:08
一.是什么?
1. JNI的含义
Java Native Interface 它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了,JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境。(还有不懂,请自行百度解决)
为什么要用它?
- 复用一些优秀的c/c++或者其它代码
- 效率问题,c代码可以直接操作硬件,java代码只能操作虚拟机
- c代码反编译困难,调试困难,java代码反编译比较容易。
怎么用?
在Android studio 2.2之前只能通过ndkBuilder方式进行项目的构建,2.2以后可以使用cmake方式进行项目的构建
1.使用ndkBuilder进行项目的构建
- 一,首先你需要下载ndk(如果你已经安装了,请略过)
最终安装的时候会卡很长时间,慢慢等 - 二,在要运行的项目中的build.gradle文件中的defaultConfig节点中增加以下代码
ndk {moduleName "JniDemo" //生成的so库名字ldLibs "log", "z", "m" //添加依赖库文件,因为有log打印等//非必填加项abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库,目前可有可无。//不填写则生成所有}
三,在gradle.properties文件中设置android.useDeprecatedNdk=true
四,编写调用c/c++的本地代码
public class JniUtils { // 这里以获取一个C中的字符串为栗子 public static native String getString();}
五,生成.h文件
– rebuild或clear一下,生成你的class文件,class文件路径如下
– 打开你的命令行,输入以下命令
– .h文件会生成在你class文件的路径下- 六,将.h的头文件拷贝到jni目录下,编写c/c++的方法
–
– 我不会c…就写了个helloWorld - 七,在刚刚的jniUtils中静态导入
-
那个包名就是你在gradle里面配置的包名
至此,所有jni的配置都已经完成了,你可以在通过JniUtils中的getString()方法成功调用对你的C代码,最终结果显示如下:
- 六,将.h的头文件拷贝到jni目录下,编写c/c++的方法
到这里,用ndkBuilder构建的方法就已经介绍完了,下一篇介绍cmake的方式构建~~~~
1 0
- jni在Android studio中的配置和使用(一)
- jni在Android studio中的配置和使用(二)
- JNI在Android Studio 2.2中基本配置和使用
- Android studio 初步使用JNI(一)配置NDK
- Android Studio 下配置JNI的使用 ---CMakeList【开篇一】
- lambda:在android studio中的配置和使用lambda表达式
- GreenDao 在 Android Studio 中的配置使用
- Android studio下使用jni(一)
- Android Studio 配置以及JNI使用
- Android Studio使用jni环境配置
- 在Android Studio中使用Jni
- 在Android Studio中使用Jni
- 如何在Android Studio中使用JNI
- Android greenDAO在Android Studio中的配置与使用
- android studio JNI使用
- Android Studio使用JNI
- android studio使用jni
- Android Studio 使用JNI
- volatile 与 synchronized关键字详解
- 【leetcode】447. Number of Boomerangs【E】
- Spring Cache
- 最小二乘法与曲线拟合
- 106 多米诺骨牌(12)119(8)130(9)142(10)150(11)
- jni在Android studio中的配置和使用(一)
- 【codeforces 680 D】【数学+贪心+DFS】【求一个不超过 m 的最大体积 X, 每次选一个最大的 x 使得 x3 不超过当前剩余体积。问在能选最多个数的情况下,X 最大是多少】
- java i++ 和 ++i 深度解析
- java 遍历arrayList的四种方法
- Python wheel /whl 文件包的正确安装
- java中i++和++i
- 顺序表
- 为了保护眼睛,将eclipse背景色调成豆沙绿
- DM&ML_note.6-K-中心点聚类算法