许多成熟的C引擎要移植到Android 平台上使用 , 一般都会 提供 一些接口, 让Android sdk 和 jdk 实现. 下文将会介绍 C 如何 通过 JNI 层调用 Java 的静态和非静态方法. 1.主要流程 1.  新建一个测试类TestProvider.java a)         该类提供了2个方法 b)        一个静态的方法,一个非静态的方法 2.  JNI中新建Provider.c a)         该文件中需要把Java中的类TestProvider映射到C…
近期为android 端项目包装一些c++代码,故学习ndk相关知识,现总结如下: 1,java与c++类型参照图: 2,此测试中使用的java类: package com.dasea.test.core; public class TestSetData { // 主要是类ID和字段ID,方法ID的缓存 static { OnNative(); } public native static void OnNative(); public boolean bData; public double…
1,阅读此文章前请阅读前面文章,以免阅读出现障碍: android NDK 实用学习(一)-获取java端类及其类变量 android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值 android NDK 实用学习(三)- java端类对象的构造及使用 android NDK 实用学习(四)-类缓存 2,java端类接口定义: public class RTKNativeManager { // 其他接口 // 开给c++端的接口 public static void noti…
1,读此文章前我假设你已经读过: android NDK 实用学习-获取java端类及其类变量 android NDK 实用学习-java端对象成员赋值和获取对象成员值 2,java端类对象的构造: ①首先获取类; ②获取类的无参构造函数: jmethodID initID = env->GetMethodID(jcSetDataMgr, "<init>", "()V"); ③构造类实例: jobject jresult = env->New…
1,关于java端类及接口定义请参考: android NDK 实用学习-获取java端类及其类变量 2,对传过来的参数进行赋值: 对bool类型成员进行赋值  env->SetBooleanField(jobj, jfbdata, false); 对double类型成员进行赋值 env->SetDoubleField(jobj, jfddata, 209.22); 对int类型成员进行赋值 env->SetIntField(jobj, jfidata, ); 对byte类型成员进行赋值…
1,为什么需要类缓存: 答:由于频繁的查找类及类成员变量需要很大的时间与空间开销,可参考如下文章: http://www.ibm.com/developerworks/cn/java/j-jni/ http://www.28im.com/java/a2379737.html 2,缓存时需要在java类使用static,如下: package com.dasea.test.core; public class TestSetData { // 主要是类ID和字段ID,方法ID的缓存 static…
原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据传输二(引用数据类型)(附源码) 基于 Android NDK 的学习之旅-----数据传输(引用数据类型) 接着上篇文章继续讲.主要关于引用类型的数据传输,本文将介绍字符串传输和自定义对象的传输. 1.主要流程 1.  String 字符串传输 a)         上层定义一个native的方法…
工欲善其事 必先利其器 , 下面介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建. 1.Android 开发环境搭建 Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说. 1)      下载 JDK 2)      下载 Eclipse 3)      下载 Android SDK 4)      启动Eclipse , 安装 ADT 2.下载安装Android NDK 我使用的NDK版本为r5 Google 出的最新N…
尽管说使用NDK能够提高Android程序的运行效率,可是调用起来还是略微有点麻烦.NDK能够直接使用Java的原生数据类型,而引用类型,由于Java的引用类型的实如今NDK被屏蔽了,所以在NDK使用Java的引用类型则要做对应的处理. 一.对引用数据类型的操作 尽管Java的引用类型的实如今NDK被屏蔽了,JNI还是提供了一组API,通过JNIEnv接口指针提供原生方法改动和使用Java的引用类型. 1.字符串操作 JNI把Java的字符串当作引用来处理,在NDK中使用Java的字符串,须要相…
转载请注明出处:http://blog.csdn.net/allen315410/article/details/41862479 在上篇博客里了解了Java层是怎样传递数据到C层代码,并且熟悉了大部分的实际开发知识,基本上掌握这些就可以做一个基本的NDK开发了,但是光是了解Java回调C层的数据是不是还不够啊,考虑问题要考虑可逆性,Java能回调C,那么C能否反过来回调Java呢?答案是肯定可以的,这篇博客就介绍一个C语言如何调用Java层的代码.以下是一些问题场景,我们带着这个问题场景来分析…