ndk
文章平均质量分 58
WaTeR_from
这个作者很懒,什么都没留下…
展开
-
ndk开发 jni基础知识准备
JNIjava native interfacejava 连接windows或者linux系统的功能的连接器的作用jni为了java而生的Host environment 操作系统环境,有自己的本地库和cpu指令集全部都是由本地程序c++和c编译的,编译成本低可识别的二进制代码。因此本地程序和本地库通常依赖于操作系统环境jni其实是java虚拟机的一个部原创 2017-09-08 14:36:10 · 203 阅读 · 0 评论 -
jni基础知识2
生成.h文件在c中调用native方法该方法会有两个参数:参数:JNIEnv *,jclass/jobject参数1:JNIENV是一个结构体指针代表java的运行环境,可以调用java的代码env是二级指针因为JNIENV是一级指针为什么这么定义?因为c和c++需要兼容,必须要用同一个头文件,所以C中要用2级指针C++要用一级指针参原创 2017-09-08 15:11:53 · 166 阅读 · 0 评论 -
jni访问java成员
访问非静态域(域=成员)例如:现在要在C中访问一个java文件中的string变量keypublic String key;可以自定义jni在C上的接口java_类名_native名称首先非静态获取jclassjclass jclz = (*env)->GetObjectClass(env,jobj);获取key属性的idjava jni中给每一个field原创 2017-09-08 15:14:00 · 226 阅读 · 0 评论 -
jni访问java方法
java访问静态方法实现原理:JVM在系统层会将运行的相关类名加载到虚拟机中去,为动态加载过程,用到的时候才会加载。类加载器ClassLoader把静态方法class加载进入jvm中。加载失败时会报错报java.lang.ClassNotFoundExceptionjni去访问静态方法时和jvm访问静态方法非常类似获取jclass通过jobject搜原创 2017-09-08 15:26:14 · 263 阅读 · 0 评论 -
jni访问数组
jni访问数组:jni两种数组:基本类型数组,引用类型数组实现数组排序public native void giveArray(int[] arry);c需要的数据类型jintArray arr;流程:将jintArray转换成C可以识别的int。通常都会进行转换将指针当作数组使用。jint = longjint *elemts = (*env)原创 2017-09-08 16:01:42 · 241 阅读 · 0 评论 -
jni引用
jni引用:jni和java关系:jni是jvm的一部分,如果要用jni去访问虚拟机内部的数据结构。jni在java中自定义的class,在jvm中会形成内部数据结构。当需要访问时,jni就要提供一套接口来访问。这个接口给我们去访问jvm数据结构时和jni之前就声称对应的数据结构,这个就是引用当我们想要访问jvm虚拟机中数据结构时,只可以使用jni的引用jni三原创 2017-09-08 16:03:05 · 266 阅读 · 2 评论