Android JNI和NDK学习(06)--JNI的数据类型
来源:互联网 发布:java void方法结束 编辑:程序博客网 时间:2024/05/08 02:41
本文介绍JNI的数据类型。NDK中关于JNI数据类型的定义都在jni.h中,大家可以参考jni.h。jni.h在ndk中的路径参考:
android-ndk-r7b/platforms/android-14/arch-arm/usr/include/jni.h
1 基本数据类型
为了使用方便,JNI还提供了以下定义:
#define JNI_FALSE 0#define JNI_TRUE 1typedef jint jsize;
2 引用类型
3 数组类型
4 Java虚拟机类型
将JNI注册到Java时,会首先注册到Java虚拟机。Java虚拟机的类型如下表:
说明:
(01) L fully-qualified-call;
示例:"Ljava/lang/String;",它在Java虚拟机中表示“Java中的java.lang.String”对应的类型。
注意:fully-qualified-call必须对应完整的java路径,且用“/”分格。
(02) [ type
示例:"[I",表示int[]类型的数组。
(03) (arg-types) return-type
示例:"(Ljava/lang/String;)I",表示参数是string类型,返回值是int类型。
理解上面这些基本类型之后,我们再来介绍“JNINativeMethod 结构体”。这是JNI编程中非常重要的一个结构体!
5 JNINativeMethod 结构体
5.1 JNINativeMethod定义
typedef struct { const char* name; const char* signature; void* fnPtr; } JNINativeMethod;
name:Java中函数的名字。
signature:Java中函数的参数和返回值。一般的形式是"(arg-types)return-type":arg-types对应是参数类型,空白表示没有参数;return-type是返回值类型,不能是空白,若返回void,则应该设置return-type为V。
fnPtr:指向native函数的函数名称。前面都要接 (void *)
5.2 JNINativiMethod的示例
// Java和JNI函数的绑定表static JNINativeMethod method_table[] = { { "stringFromJni" , "()Ljava/lang/String;" , (void*)stringFromJni }, { "stringToJni" , "(Ljava/lang/String;)V" , (void*)stringToJni },};
stringFromJni、stringToJni在Java和JNI中的声明分明如下:
// stringToJni对应在Java中的声明private native String stringFromJni();// stringToJni对应在JNI中的声明JNIEXPORT jstring JNICALL stringFromJni(JNIEnv *env, jobject clazz);// stringToJni对应在Java中的声明private native void stringToJni(String val);// stringToJni对应在JNI中的声明JNIEXPORT void JNICALL stringToJni(JNIEnv *env, jobject clazz, jstring val);
- Android JNI和NDK学习(06)--JNI的数据类型
- android(NDK+JNI)---JNI数据类型
- Android JNI和NDK学习(07)--JNI的常用API
- 基于 Android NDK 的学习之旅-----JNI 数据类型
- 基于 Android NDK 的学习之旅-----JNI 数据类型
- 基于 Android NDK 的学习之旅-----JNI 数据类型
- 基于 Android NDK 的学习之旅-----JNI 数据类型
- 基于 Android NDK 的学习之旅-----JNI 数据类型
- 基于 Android NDK 的学习之旅-----JNI 数据类型
- Android NDK开发之Jni的数据类型
- Android NDK和Jni
- Android JNI 和 NDK
- Android JNI和NDK学习(03)--动态方式实现JNI
- Android JNI和NDK学习(5)--JNI分析API
- Android JNI和NDK学习(02)--静态方式实现JNI
- Android JNI和NDK学习(03)--动态方式实现JNI
- Android JNI和NDK学习(05)--JNI真机调试
- Android-JNI NDK的学习记录
- 03网络请求_03_okHttp3基本使用
- CAShapeLayer 学习和实践
- Android 内存优化总结&实践
- JDK帮助文档stringbuffer中文版
- android vector pathData探究,几分钟绘制自己的vectordrawable
- Android JNI和NDK学习(06)--JNI的数据类型
- ZOJ Problem Set
- [svn] 常用命令
- C++概念性知识点之const限定符
- 关于链表
- 框架模式-观察者模式
- Java8---并行流
- 继承
- Python 列表排序方法reverse、sort、sorted详解