
Android JNI
文章平均质量分 87
linmiansheng
邮箱 :sheepjtgjfc163.com
展开
-
Android中关于JNI 的学习(零)简单的例子,简单地入门
1)创建Java类文件,并定义Native方法,如JniTest类。2)利用javac生成class文件,然后回到src目录,利用javah生成C/C++头文件,在这里要注意,javah命令要在包的根目录下调用,对应的类文件,必须是完整的类名,如下:在Src目录:javah com.lms.jni.JniTest,在上面的截图,也可以看到javac之后,是回到src目录,再调用javah。3)编写对应的C文件,如JniTest.c,在里面实现C/C++的方法,记得要放在jni文件夹下面。4)编写An原创 2014-05-06 13:12:14 · 2545 阅读 · 6 评论 -
Android中关于JNI 的学习(一)对于JNIEnv的一些认识
一个简单的例子让我们初步地了解JNI的作用,但是关于JNI中的一些概念还是需要了解清楚,才能够更好的去利用它来实现我们想要做的事情。那么C++和Java之间的是如何通过JNI来进行互相调用的呢?我们知道,在Android中,当Java文件被编译成dex文件之后,会由类加载器加载到Dalvik VM(DVM)中,由DVM来进行解释,翻译成机器语言之后,才能由机器来运行。而对于C/C++来原创 2014-05-18 14:21:29 · 2980 阅读 · 1 评论 -
Android中关于JNI 的学习(二)对于JNI方法名,数据类型和方法签名的一些认识
我们可以看到方法名是以Java_com_lms_jni等开头的,还有什么所谓的Signature,那这些其实都是什么意思呢,今天我们就来简单地认识一下。JNI 命名规则对于传统的JNI编程来说,JNI方法跟Java类方法的名称之间有一定的对应关系,要遵循一定的命名规则,如下:1) 前缀: Java_2) 类的全限定名,用下划线进行分隔(_):com_lms_jni_JniTest3) 方法名:getTestString原创 2014-05-19 13:43:18 · 3254 阅读 · 0 评论 -
Android中关于JNI 的学习(三)在JNI层访问Java端对象
前面两篇文章简单介绍了JNI层跟Java层的一些对应关系,包括方法名,数据类型和方法名称等,相信在理论层面,能够很好地帮助我们去了解JNI在Native本地开发中的作用,对JNI的一些概念也有了一个初步的认识,由于表达能力或者理解还是有限,有些地方讲得不是很清楚,如果各位朋友有觉得云里雾里,欢迎大家有留言一起学习。概念上的理解有助于我们更好地认识JNI,而一些实际点的例子则能够更好地帮我们从代码上去掌握并应用JNI。...这是一种最简单的情况,但更多时候,我们需要在JNI层获得Java对象,对其进行操原创 2014-05-20 13:30:46 · 2101 阅读 · 0 评论 -
Android中关于JNI 的学习(六)JNI中注册方法的实现
在前面的例子中,我们会发现,当在Java类中定义一个方法的时候,如下:public class ParamTransferTest { public static int testval = 1; public native void changeTestVal();则在对应的JNI层中,由javah生成的头文件和其对应的C文件,其方法名称必须如下:JNIEXPORT voi原创 2014-06-03 18:07:41 · 2144 阅读 · 2 评论 -
Android中关于JNI 的学习(四)简单的例子,温故而知新
在第零篇文章简单地介绍了JNI编程的模式之后,后面两三篇文章,我们又针对JNI中的一些概念做了一些简单的介绍,也不知道我到底说的清楚没有,但相信很多童鞋跟我一样,在刚开始学习一个东西的时候,入门最好的方式就是一个现成的例子来参考,慢慢研究,再学习概念,再回过来研究代码,加深印象,从而开始慢慢掌握。今天我们就再来做一个小Demo,这个例子会比前面稍微复杂一点,但是如果阅读过前面几篇文章的话,理解起来也还是很简单的。很多东西就是这样,未知的时候很可怕,理解了就很简单了。1)我们首先定义一个Java类,里面包原创 2014-05-22 13:37:36 · 2360 阅读 · 0 评论 -
Android中关于JNI 的学习(五)在C文件中使用LogCat
Log是开发过程中,对于我们调试程序非常重要的一个工具,有很多时候,我们正是通过Log才能够看清楚程序是不是真的按照我们想像中的模式在跑,从而定位到问题所在的地方。而在Android开发中,毫无疑问,要是没有了logcat,我们调试程序的时候,就会痛苦死。在NDK的开发中,尽管我们是利用C/C++来开发程序的,然后通过加载共享库的方法来调用C/C++程序,Android也提供了一套方法,可以让原创 2014-06-03 10:09:56 · 2333 阅读 · 1 评论