jni
文章平均质量分 84
I_托尼
这个作者很懒,什么都没留下…
展开
-
JNI/NDK开发指南(一)—— JNI开发流程及HelloWorld
JNI全称是Java Native Interface(Java本地接口)单词首字母的缩写,本地接口就是指用C和C++开发的接口。由于JNI是JVM规范中的一部份,因此可以将我们写的JNI程序在任何实现了JNI规范的Java虚拟机中运行。同时,这个特性使我们可以复用以前用C/C++写的大量代码。开发JNI程序会受到系统环境的限制,因为用C/C++语言写出来的代码或模块,编译过程当中要依赖当前操转载 2016-08-09 12:21:31 · 1079 阅读 · 0 评论 -
JNI/NDK开发指南(九)---JNI异常处理
异常简介异常,显而意见就是程序在运行期间没有按照正常的程序逻辑执行,在执行过程当中出现了某种错误,导致程序崩溃。在Java中异常分为运行时异常(RuntimeException)和编译时异常,在程序中有可能运行期间发生异常的逻辑我们会用try…catch…来处理,如果没有处理的话,在运行期间发生异常就会导致程序奔溃。而编译时异常是在编译期间就必须处理的。本章主要介绍运行时异常。 示例1:转载 2016-08-10 16:50:55 · 483 阅读 · 0 评论 -
JNI/NDK开发指南(八)---JNI调用性能测试及优化
在前面几章我们学习到了,在Java中声明一个native方法,然后生成本地接口的函数原型声明,再用C/C++实现这些函数,并生成对应平台的动态共享库放到Java程序的类路径下,最后在Java程序中调用声明的native方法就间接的调用到了C/C++编写的函数了,在C/C++中写的程序可以避开JVM的内存开销过大的限制、处理高性能的计算、调用系统服务等功能。同时也学习到了在本地代码中通过JNI提供的转载 2016-08-10 14:13:07 · 2548 阅读 · 0 评论 -
JNI/NDK开发指南(七)---调用构造方法和父类实例方法
我们先回过一下,在Java中实例化一个对象和调用父类实例方法的流程。先看一段代码:package com.study.jnilearn;public class Animal { public void run() { System.out.println("Animal.run..."); }}package com.study.jnilearn;p转载 2016-08-10 11:58:33 · 570 阅读 · 0 评论 -
JNI/NDK开发指南(五)---C/C++访问Java实例方法和静态方法
通过前面5章的学习,我们知道了如何通过JNI函数来访问JVM中的基本数据类型、字符串和数组这些数据类型。下一步我们来学习本地代码如何与JVM中任意对象的属性和方法进行交互。比如本地代码调用Java层某个对象的方法或属性,也就是通常我们所说的来自C/C++层本地函数的callback(回调)。这个知识点分2篇文章分别介绍,本篇先介绍方法回调,在第七章中介绍本地代码访问Java的属性。在这之前,先转载 2016-08-10 09:02:40 · 873 阅读 · 0 评论 -
JNI/NDK开发指南(四)--访问数组(基本类型数组与对象数)
JNI中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是JNI的基本数据类型,可以直接访问。而对象数组中的所有元素是一个类的实例或其它数组的引用,和字符串操作一样,不能直接访问Java传递给JNI层的数组,必须选择合适的JNI函数来访问和设置Java层的数组对象。阅读此文假设你已经了解了JNI与Java数据类型的映射关系,如果还不了解的童鞋,请移步《JNI/转载 2016-08-09 17:19:56 · 651 阅读 · 0 评论 -
JNI/NDK开发指南(三)---Android NDK开发Crash错误定位
在Android开发中,程序Crash分三种情况:未捕获的异常、ANR(Application Not Responding)和闪退(NDK引发错误)。其中未捕获的异常根据logcat打印的堆栈信息很容易定位错误。ANR错误也好查,Android规定,应用与用户进行交互时,如果5秒内没有响应用户的操作,则会引发ANR错误,并弹出一个系统提示框,让用户选择继续等待或立即关闭程序。并会在/data/a转载 2016-08-09 16:17:52 · 1317 阅读 · 0 评论 -
JNI/NDK开发指南(二)---字符串处理
typedef unsigned char jboolean;typedef unsigned short jchar;typedef short jshort;typedef float jfloat;typedef double jdouble;typedef int jint;#ifdef _LP64 /* 64-b转载 2016-08-09 15:53:16 · 689 阅读 · 0 评论 -
JNI官方中文资料
声明该篇文章完全引用自《JNI完全手册》完整版,用来方便查询查阅,同时作为该系列教程的基础知识。感谢原文档作者。文档所依赖的版本是比较低的,但是恰恰是低版本才能更容易上手学习。文档也有些枯燥,适合开发中参考查询和粗略概况性 的浏览掌握大局使用,也是下来几篇的基础性指导文档。下来几篇不会再解释代码简单函数释义,只会说重点,遇到不懂的来 这篇文章搜索函数名即可查阅函数详情。设计概述转载 2016-08-11 10:42:54 · 6112 阅读 · 0 评论