Android Stduio 下NDK 开发规则
来源:互联网 发布:linux批量解压缩zip 编辑:程序博客网 时间:2024/06/08 02:29
android stduio 下NDK 开发规则介绍
一、类型转换表格
表1-1 基础数据类型的转换关系表
表1-2 Java引用数据类型的转换关系表
二、常用类型介绍
2.1 JNIEnv结构体介绍
JNIEnv是一个与线程相关的代表JNI环境的结构体,图2-1展示了JNIEnv的内部结构:
图 2-1 JNIEnv 内部结构图
从上图可知,JNIEnv提供了一些JNI系统函数,通过这些函数能够操作jobject对象和调用java层的函数
2.2 用于操作java类的成员变量和成员函数的两个函数分别是:
jfieldID GetFieldID(jclass clazz,const char *name,const char *sig);jmethodID GetMethodID(jclass clazz,const char *name,const char *sig);其中,jclass代表Java类,name表示成员函数或者成员变量的名字,sig为参数类型+返回值信息
2.3 调用Java对象的函数和获取对象字段
NativeType Call<type>Method(JNIEnv *env,jobject obj,jmethodID methodID,...)其中type是Java函数的返回值类型,NativeType是本地对应的返回值类型NativeType Get<type>Field(JNIEnv *env,jobject obj,jfieldID fieldID)void Set<type>Field(JNIEnv *env,jobject obj,jfieldID fieldID,NativeType value)其中type和NativeType与上述一样,这里的jfieldID就是从上面的GetFieldId中找到的。
表2-1 常用的Get/Set方法
2.4 JNI类型签名介绍
先来看一段动态注册的代码,如果要了解动态注册的相关内容可以到
这里
static JNINativeMethod gMethods[]={ "stringFromJNI", //java层的函数名 "()Ljava/lang/String;", //(参数类型) 返回值类型,即JNI函数签名 (void *)stringFromJNI //本地库对应的函数名}
这个数组中的第二个参数正是我们需要了解的
本例对应的java函数为 String stringFromJNI()
对应的JNI签名为
()Ljava/lang/String;
括号内是参数类型的标识,最右边是返回值类型的标识,
返回类型是引用类型时,其格式为 “L包名;”,上述例子的Ljava/lang/String;表示是一个Java String 类型
表2-2 类型标识示意表
请初一,如果java类型是数组,则标识中会有一个 “[”,引用类型的标识最后都有一个 “;”
表2-3 函数签名的小例子
0 0
- Android Stduio 下NDK 开发规则
- Android stduio NDK开发
- Android Stduio NDK项目构建
- Android stduio开发工具问题
- ubuntu下android ndk开发
- android studio下ndk开发
- Android Studio下NDK开发
- android studio下ndk开发
- Android stduio 开发百度地图API版本4.5(1)
- 当Android stduio 变得不支持安卓开发的时候
- Android Stduio的依赖
- Android stduio依赖关系
- Android stduio 快捷键
- android stduio 获取sha1
- Android Stduio环境配置
- Android Stduio 使用Lombok
- windows 下 Android NDK开发配置(window + cygwin + NDK )
- Windows环境下Android NDK的开发
- 23种设计模式之模板方法模式
- 梯度、㪚度、旋度
- 常见的jquery的选择
- C#之WinForm基础 comboBox1.SelectedIndex得到控件中被选中数据项的索引值
- SoapUI Groovy Script
- Android Stduio 下NDK 开发规则
- 输入一行字符,输出最长的单词
- 谈谈计划
- ]一周热文推荐:致应届毕业生——程序员的生存法则
- 坐姿也能影响工作效率?
- POJ 2796 Feel Good
- linux开机流程详解
- Microsoft Visual Studio正忙解决办法
- docker常用操作