JNI详细教程
来源:互联网 发布:学习软件大全下载 编辑:程序博客网 时间:2024/05/25 12:22
一、创建java文件
首先创建需要调用jni的java文件。如:
package com.rg.serialPort;public class SerialPort { ... public SerialPort(File device, int baudRate, int flags) throws SecurityException, IOException { ... } public InputStream getInputStream() { ... } public InputStream getOutputStream() { ... // JNI private native static FileDescriptor open(String path, int baudrate, int flags); public native void close(); static { System.loadLibrary("serialPort"); }}
二、编辑生成class
进入src/ 目录,然后运行
javac com/cqb/hellojnitest/HelloJniTest.Java
可以看到在相应的目录下生成了 HelloJniTest.class
或直接在.java文件所在的目录底下 javac
cmd -> javac(编译StudentToJNI.Java文件) 生成字节码文件
实验没成功,可以直接借助IDE直接生成,eclipse在bin目录下,androidstudio在build/intermediates/classes/debug/下
三、使用javah生成头文件
cd至项目classess目录下 执行
javah -classpath bin/classes com.rg.serialPort.SerialPort
javah -classpath build/intermediates/classes/debug/com/rg/serialPort/ com.rg.serialPort.SerialPort
通过输入javah 可以看到以下结果:
用法:javah [选项] <类>其中 [选项] 包括: -help 输出此帮助消息并退出 -classpath <路径> 用于装入类的路径 -bootclasspath <路径> 用于装入引导类的路径 -d <目录> 输出目录 -o <文件> 输出文件(只能使用 -d 或 -o 中的一个) -jni 生成 JNI样式的头文件(默认) -version 输出版本信息 -verbose 启用详细输出 -force 始终写入输出文件
这表明:-classpath是用来装入类的路径的,而前面我们已经进入了项的根路径目录,所以-classpath只要装载SerialPort.class类文件的bin\classes目录,-d用来指定输出路径,一般在项目根路径下面新建一个jni文件夹用来存储c文件,所以,-d后面输入jni,最后是报名+类名
四、JNI
项目根目录下新建jni文件夹,复制 .h文件至jni文件夹下,然后找到ndk的安装目录找到android.mk,Application.mk文件夹一同放在jni目录下,注意如果使用c++里的库需要在Application.mk文件中加入(APP_STL:= stlport_shared)
至于两个文件内容其它的用法,这里就不在描述(goolgle)jni文件夹下新建.cpp文件,最好名称与头文件一致,然后拷贝头文件里的所有函数至cpp文件夹内,并且导入头文件(#include<name.h>),当然也要导入jni.h头文件,其实我们主要做的是就是通过jni把java传进来的类型,转换成c++需要的类型,然后把c++返回的值通过jni转换成java所需要的类型。jni.h头文件里提供了很多转换的方法以及取值的方法,具体大家可以打开ndk安装目录(platforms\android-9\arch-arm\usr\include)目录下查看jni.h头文件
- JNI详细教程
- JNI详细教程
- JNI详细教程
- AndroidStudio最详细JNI教程
- AndroidStudio最详细JNI教程
- 初探JNI技术,HelloWorld 图文详细教程
- Java Native Interface(JNI)从零开始详细教程
- AndroidStudio JNI详细教程+Gradle3.0 以上 JNI 爬坑之旅
- JNI教程
- JNI教程: 1. JNI简介
- android jni 详细介绍
- Java JNI 详细介绍
- [android jni]android JNI 详细介绍
- 【转】JNI 教程
- android jni系列教程
- Chap5:jni教程
- JNI Windows 使用教程
- JNI系统教程
- 几个问题
- 浅析 Graham's Scan 算法的水平序实现
- 关于密码方面的一些总结
- 禁止让异常逃离析构函数
- 记一次在LAMP中遇到的问题
- JNI详细教程
- Gson的使用
- SDUT OJ 1591交叉排序
- Java编程过程中遇到的问题记录
- android adb使用
- C 各种排序(选择/冒泡/快速/插入/希尔/归并/堆)
- 机器学习初探
- JAVA面试宝典2
- 【编程语言】Scala下载及安装教程 CentOS 7