在 android_main(struct android_app*
state)函数里面设置输入事件处理函数:state->onInputEvent =
&handleInput;//设置输入事件的处理函数,如触摸响应函数介绍:AMotionEvent_getX():以屏幕左上角为原点,是绝对坐标...
分类:
移动开发 时间:
2014-05-23 09:29:18
阅读次数:
585
目标
面向 Eclipse (ADT) 的 Android 插件现在支持基于 NDK 的应用开发。 其可自动生成项目和构件文件以及代码存根,并可集成到整个 Android 应用开发中(构建原生库、将库复制到项目内的相应 JNI 文件夹、将应用打包以及生成带有 NDK 代码的最终 APK)。 本文将讨论如何配置 Eclipse 以利用该功能,并示范移植 NDK 应用的示例。
配置 Ecl...
分类:
移动开发 时间:
2014-05-23 07:50:44
阅读次数:
395
在第零篇文章简单地介绍了JNI编程的模式之后,后面两三篇文章,我们又针对JNI中的一些概念做了一些简单的介绍,也不知道我到底说的清楚没有,但相信很多童鞋跟我一样,在刚开始学习一个东西的时候,入门最好的方式就是一个现成的例子来参考,慢慢研究,再学习概念,再回过来研究代码,加深印象,从而开始慢慢掌握。
今天我们就再来做一个小Demo,这个例子会比前面稍微复杂一点,但是如果阅读过前面几篇文章的话,理解起来也还是很简单的。很多东西就是这样,未知的时候很可怕,理解了就很简单了。
1)我们首先定义一个Java类,里面包...
分类:
移动开发 时间:
2014-05-23 02:25:28
阅读次数:
316
一个简单的例子让我们初步地了解JNI的作用,但是关于JNI中的一些概念还是需要了解清楚,才能够更好的去利用它来实现我们想要做的事情。
那么C++和Java之间的是如何通过JNI来进行互相调用的呢?
我们知道,在Android中,当Java文件被编译成dex文件之后,会由类加载器加载到Dalvik VM(DVM)中,由DVM来进行解释,翻译成机器语言之后,才能由机器来运行。
而对于C/C++来...
分类:
移动开发 时间:
2014-05-22 09:28:30
阅读次数:
349
1.在工程下新建 jni/libs 文件夹 , jni 是和原来的libs 同级 ,将所有的.so文件放入 新建的libs文件下
2.在build.gradle 文件中新增以下内容到android{ } 下
task copyNativeLibs(type: Copy) {
from(new File(project(':HealthCare'...
分类:
移动开发 时间:
2014-05-22 08:50:52
阅读次数:
381
我们可以看到方法名是以Java_com_lms_jni等开头的,还有什么所谓的Signature,那这些其实都是什么意思呢,今天我们就来简单地认识一下。
JNI 命名规则
对于传统的JNI编程来说,JNI方法跟Java类方法的名称之间有一定的对应关系,要遵循一定的命名规则,如下:
1) 前缀: Java_
2) 类的全限定名,用下划线进行分隔(_):com_lms_jni_JniTest
3) 方法名:getTestString ...
分类:
移动开发 时间:
2014-05-22 08:18:14
阅读次数:
418
Jni Error(app bug): accessed stale local
reference这个错误平常是 弱全局变量引起的时候 出现的一个错误,但是今天我却在另外一种情况下遇到了下面是错误截图出现错误的原因其他很简单
是因为自己的粗心引起的java层函数声明是这么写的 publicnati...
分类:
移动开发 时间:
2014-05-21 22:00:58
阅读次数:
390
前面两篇文章简单介绍了JNI层跟Java层的一些对应关系,包括方法名,数据类型和方法名称等,相信在理论层面,能够很好地帮助我们去了解JNI在Native本地开发中的作用,对JNI的一些概念也有了一个初步的认识,由于表达能力或者理解还是有限,有些地方讲得不是很清楚,如果各位朋友有觉得云里雾里,欢迎大家有留言一起学习。
概念上的理解有助于我们更好地认识JNI,而一些实际点的例子则能够更好地帮我们从代码上去掌握并应用JNI。
...
这是一种最简单的情况,但更多时候,我们需要在JNI层获得Java对象,对其进行操...
分类:
移动开发 时间:
2014-05-21 15:46:17
阅读次数:
233
我们知道 android NDK 程序在崩溃时会生成一个 tombstone 的 backtrace (也可利用 ADB logcat 抓取),从这个 backtrace 中我们可以了解是哪个函数引发的崩溃,但是通常由于我们发布时都是 release 版,无法利用 backtrace 中的地址信息直接定位到源码和行号,当引发崩溃的错误不是很明显时,对于我们解决问题的帮助就不大。
这时通常我们是重...
分类:
移动开发 时间:
2014-05-21 15:30:02
阅读次数:
502