jni的使用
来源:互联网 发布:学编程用什么软件 编辑:程序博客网 时间:2024/06/17 01:31
一.什么是jni(what)
* JNI : Java Native Interface java本地接口,实现让java和本地语言c/c++之间的相互调用。jni是一种协议,提供的一套编程框架。
二.为什么使用jni(why)
* 1.操作底层硬件,android手机上的传感器
* 2.程序的运行效率高,2d3d加速,音视频的解码
* 3.程序的安全性
* 4.复用本地开源项目,SQLite,OpenSSL,OpenGL,OpenCV,FFmpeg
* 5.复用公司之前本地项目
三如何使用jni
## jni开发流程 ##* 1.新建模块,native声明本地方法,调用本地方法 //native声明一个本地方法,具体是由c来实现 public native String helloFromC(); public void click(View view){ Toast.makeText(this, helloFromC(), Toast.LENGTH_SHORT).show(); }* 2.在module的build.gradle中defaultConfig 内添加ndk,写法如下.同步报错,点击setXXX 自动添加android.useDeprecatedNdk=true defaultConfig { applicationId "com.itheima.jnidemo" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk{ moduleName "hello" //指定最终生成库名,最终生成的库文件名libhello.so } }* 3.在调用本地方法的类中加载动态库,指定库名来加载 static { System.loadLibrary("hello");//指定库名加载动态库 }* 4.模块中new一个jni Folder文件夹,默认在main目录下* 5.在jni文件夹下新建hello.c源文件,hello.h头文件(可选)* 6.在hello.c源文件中按要求实现本地方法相应函数#include "hello.h" //“”包含的头文件优先在当前目录下查找,如果没找到,再去系统头文件目录找#include <jni.h> //提供java和c的基本类型及引用类型对应,声明数据转换方法/** * 本地方法相应的函数名:Java_包名_类名_本地方法名 * 参数1 JNIEnv *env jni环境,调用转换数据方法 * 参数2 jobject obj 调用本地方法类的对象*/jstring Java_com_itheima_jnidemo_MainActivity_helloFromC(JNIEnv *env, jobject obj){ char buf[] = "hello from c!"; //env : JNIEnv * <=> struct JNINativeInterface* * //JNIEnv : struct JNINativeInterface* //jstring (*NewStringUTF)(JNIEnv*, const char*); return (*env)->NewStringUTF(env, buf);}* 7.gradle同步,make module* 8.运行应用程序## javah生成本地方法相应函数声明 ##* 在main/java文件夹和com的同层目录中执行D:\jni02\code\JniDemo\calc\src\main\java>javah -classpath . -d ../jni com.itheima.calc.MainActivity
源码下载
0 0
- JNI的使用(ZT)
- JNI 的使用
- JNI的使用
- 使用j2se的jni
- JNI 的使用
- JNI的简单使用
- JNI的使用
- JNi 的使用
- JNI的使用
- JNI的使用
- jni的学习使用
- jni的使用
- Android JNI的使用
- JNI的使用
- JNI的使用
- jni的使用
- jni的简单使用
- JNI的一些使用
- jvm面试题(三)
- JS组件系列——封装自己的JS组件,你也可以
- poj 3273 Monthly Expense
- Android中直播视频技术探究之---基础知识大纲介绍
- 51Nod-1107-斜率小于0的连线数量
- jni的使用
- log4j和logback
- 二叉排序树
- uva 12657 Boxes in a Line
- 【软工视频】软件实现
- 搞懂指针
- Spring的PropertyPlaceholderConfigurer 占位符应用
- nyoj-1291-不是匹配【思维】
- 坚持#第15天~天天进步