android
文章平均质量分 65
Arthur__yan
这个作者很懒,什么都没留下…
展开
-
Android :JNI基本原理
在Android Framework中,可以通过JNI有机的将Java上层与C/C++底层结合起来,JNI提供了一系列的接口,允许Java类与使用C/C++等其他编程语言编写的应用程序、模块、库进行交互操作。在Java代码中通过JNI调用C函数的步骤如下: 1. 编写Java代码 2. 编译Java代码 3. 生成C语言头文件 4. 编写C代码 5. 生成C共享库 6. 运原创 2015-12-09 23:14:54 · 909 阅读 · 3 评论 -
Android:JNI函数编码风格(C风格与C++风格)
在实现JNI本地函数,调用JN函数时,C与C++的调用方式略有不同,以GetStaticFieldID()为例,说一下两种语言调用方式的不同。jfield GetStaticFieldID(JNIEnv * env, jclass clazz, const char * name, const char * signature);在C++代码中,调用GetStaticFieldID函数时,只需要传入原创 2015-12-12 10:54:42 · 702 阅读 · 0 评论 -
Android: JNI本地函数控制Java端代码
C语言编写的JNI本地函数控制Java端的代码,主要包括以下内容: 1创建Java对象 2访问类静态成员域 3调用类的静态方法 4访问Java对象的成员变量 5访问Java对象的方法示例程序逻辑图 整个程序冲JniFuncMain类中的createJniObject()本地方法开始,经由JNI与libjnifunc.so中命名为Java_JniFuncMain_creeateJniO原创 2015-12-12 15:03:10 · 747 阅读 · 0 评论 -
Android: JNI动态注册
之前的例子当Java层调用本地函数的时候,他会从我们加载的库中寻找固定格式与本地函数名字对应的函数,如果没有,就会报错。如果找到,就会为这个本地方法与本地函数建立一个关联关系,其实就是保存JNI层函数的函数指针,以后再调用本地方法时,直接调用这个函数指针就可以了,当然这项工作是由虚拟机完成的, 但是这种方式在实际中用的并不多,首先这种静态注册方法,必须要用javah命令生成一个头文件,其次,本地原创 2015-12-17 23:05:40 · 625 阅读 · 0 评论 -
Android: 属性服务
属性服务的开始是伴随着init.c的启动就进行的。 init.c:system/core/init/init.c 具体init.c里面与属性服务有关的代码是:queue_builtin_action(property_init_action, "property_init");queue_builtin_action(property_service_init_action,"property原创 2015-12-05 15:55:22 · 734 阅读 · 0 评论