【安卓开发】JNI开发常用接口 - 1

这里主要翻译了JNI的常用接口文档。具体实例根据实际项目后续给出

文档来自
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp9502

Interface Function Table

每个函数都可以通过JNIEnv参数访问,JNIEnv类型是指向一个存放所有JNI接口指针的结构的指针,其定义如下:
typedef const struct JNINativeInterface *JNIEnv;
在JNIEnv指针中,分别包含以下接口:
1、获取版本信息
jint GetVersion(JNIEnv *env);
返回本地方法接口的版本信息
In JDK/JRE 1.1, GetVersion() returns 0x00010001.
In JDK/JRE 1.2, GetVersion() returns 0x00010002.
In JDK/JRE 1.4, GetVersion() returns 0x00010004.
In JDK/JRE 1.6, GetVersion() returns 0x00010006.

2、类操作
定义类
jclass DefineClass(JNIEnv *env, const char *name, jobject loader,const jbyte *buf, jsize bufLen);
从包含类数据的buffer中加载类,该buffer包含类调用时未被虚拟机所引用的原始类数据。
参数:
env:JNI接口指针
name:带定义的类名称或者接口名称,该字符串由modified UTF-8编码。
loader:指派给定义的类的类加载器
buf:包含.class文件数据的buffer
bufLen:buffer长度
返回:
JAVA类对象,当错误出现时返回NULL

查找类
jclass FindClass(JNIEnv *env, const char *name);
JDK release 1.1, 该函数加载一个本地定义类,它搜索CLASSPATH环境变量里的目录及zip文件查找特定名字的类。
自从Java 2 SDK release 1.2,Java安全模型允许非系统类加载跟调用本地方法。该函数
参数:
env:JNI接口指针
name:一个完全限定类名,即包名+“/”+类名,如java.lang.String 类,该参数为:”java/lang/String”;如果类名以”[“开头,将返回一个数组类。数组类型签名的数组类class java.lang.Object[],该参数应为:”[Ljava/lang/Object;”
返回:
返回对应完全限定类对象,当找不到该类时返回NULL

jclass GetSuperclass(JNIEnv *env, jclass clazz);

jboolean IsAssignableFrom(JNIEnv *env, jclass clazz1,jclass clazz2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值