JNI
乐由心起
这个作者很懒,什么都没留下…
展开
-
JNI由浅入深_7_c调用Java方法一
1、在Java中声明方法/** * javah -encoding utf-8 -jni com.example.jniandroid.service.CFunction * 当java中有中文时,会报编码GBK不可映射字符 方法的调用,加上-encoding utf-8 * * @author libin * */public class CFunction { /**原创 2015-01-06 12:21:22 · 1060 阅读 · 0 评论 -
JNI由浅入深_6_简单对象的应用
1、声明native方法public class ComplexObject { /** * 返回一个对象数组 * @param val * @return */ public native Person[] receiverBeanArray(String val); /** * 获取对象 * @return */ public native Pers原创 2015-01-05 17:05:37 · 1106 阅读 · 0 评论 -
JNI由浅入深_4_JNI基础知识详解
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,这些Ja原创 2015-01-05 14:16:07 · 2019 阅读 · 0 评论 -
JNI由浅入深_5_基本类型应用
1、基本类型应用对于JNI处理基本类型还是比较简单的,下面是Java代码: public native int intMethod(int n); public native boolean booleanMethod(boolean bool); 上面的方法是在Java中写的,注意要加native关键字,这两个方法都比较简单,分别传入int ,boolean类型到jni中,经原创 2015-01-05 14:39:45 · 920 阅读 · 0 评论 -
JNI由浅入深_2_C语言基础
*含义1.乘法 3*5 2.定义指针变量 int * p;//定义了一个名字叫p的变量,能够存放int数据类型的地址3.指针运算符, //如果p是一个已经定义好的指针变量则*p表示以p的内容为地址的变量 打印数据类型%d - int%ld – long int%c - char%f - float%lf – double%x – 十六进制输出原创 2015-01-04 19:10:50 · 875 阅读 · 0 评论 -
JNI由浅入深_3_Hello World
1、需要准备的工具,eclipse,cdt(c++)插件,cygwin(unix)和 android ndk. 在cygwin的etc目录下将ndk的路径引入到profile文件中,可以在cygwin的任何目录都可以访问到ndk,不同的ndk路径PATH的写法不同. : ${ORIGINAL_PATH=${PATH}} if [ ${CYGWIN_NOWINPATH-add原创 2015-01-04 19:35:12 · 1123 阅读 · 0 评论 -
JNI由浅入深_10_JNI 综合开发
1、使用ndk-build时如果找不到某个类,可以使用下面两种方法解决:1、1 进入src目录D:\project3\JNIAndroid\src>set classpath=D:\project3\JNIAndroid\src1、2 设置classpathclasspath .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\tools.jar;E:\转载 2015-01-15 18:21:47 · 678 阅读 · 0 评论 -
cygwin 的安装和配置
安装有两种方法,一种从网络,一种是从本地,建议从本地安装,这样速度比较快,我安装大概不到十分钟就可以了。 安装的教程比较多,这里就简单的说下。 下载:http://yunpan.cn/cfjX6D7n3YPdb (提取码:8812) 1、安装完成之后,桌面上就有一个图标,打开就可以了。因为它不是windows的所以要找到windows的盘符,需要执行cd ..原创 2014-12-08 19:36:16 · 1923 阅读 · 0 评论 -
JNI由浅入深_9_JNI 异常处理
1 、本地代码中如何缓存和抛出异常下面的代码中演示了如何声明一个会抛出异常的本地方法。CatchThrow这个类声明了一个会抛出IllegalArgumentException异常的名叫doit的本地方法。class CatchThrow { private native void doit() throws IllegalArgumentException;原创 2015-01-12 17:59:34 · 1616 阅读 · 0 评论 -
JNI由浅入深_8_JNI缓存字段和方法ID
获取字段ID和方法ID时,需要用字段、方法的名字和描述符进行一个检索。检索过程相对比较费时,因此本节讨论用缓存技术来减少这个过程带来的消耗。缓存字段ID和方法ID的方法主要有两种。两种区别主要在于缓存发生的时刻,是在字段ID和方法ID被使用的时候,还是定义字段和方法的类静态初始化的时候。1、使用时缓存字段ID和方法ID可以在字段的值被访问或者方法被回调的时候缓存起来。下面的代码中把字段ID原创 2015-01-12 17:08:49 · 1116 阅读 · 0 评论