`
android_mylove
  • 浏览: 399436 次
社区版块
存档分类
最新评论

Android的NDK开发(4)————JNI数据结构之JNINativeMethod

 
阅读更多

/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。

********************************************************************************************/


1、JNINativeMethod 结构体的官方定义

第一个变量name是Java中函数的名字。

第二个变量signature,用字符串是描述了Java中函数的参数和返回值

第三个变量fnPtr是函数指针,指向native函数。前面都要接 (void *)

第一个变量与第三个变量是对应的,一个是java层方法名,对应着第三个参数的native方法名字

更多内容请查看之前博文:http://blog.csdn.net/conowen/article/details/7521340


示例:


主要是第二个参数比较复杂:

括号里面表示参数的类型,括号后面表示返回值。

"()" 中的字符表示参数,后面的则代表返回值。例如"()V" 就表示void Fun();

"(II)V" 表示 void Fun(int a, int b);

这些字符与函数的参数类型的映射表如下:


2、第二个参数之基本数据类型




3、第二个参数之对象类型与数组类型


对象类型:以"L"开头,以";"结尾,中间是用"/" 隔开。如上表第1个

数组类型:以"["开始。如上表第2个(n维数组的话,则是前面多少个"["而已,如"[[[D"表示“double[][][]”)

对象数组类型:上述两者结合,如上表第3个


3.1、对象类型与数组类型的举例:


分享到:
评论

相关推荐

    把外部ndk-android工程放入系统源码内一起编译

    在基于Android系统的NDK(Native Development Kit)工程开发过程中,为了更好地与整个Android系统集成并方便地进行调试和测试,通常需要将外部NDK工程的部分内容融入到Android系统源码中,并与之一起编译。...

    JNI文档资料源码_2020_02_08

    【Android NDK 开发】JNI 动态注册 ( 动态注册流程 | JNI_OnLoad 方法 | JNINativeMethod 结构体 | GetEnv | RegisterNatives ) 博客地址 : https://hanshuliang.blog.csdn.net/article/details/104222271 I ....

    Android JNI使用demo源码

    JNI在Android开发中起着至关重要的作用,尤其是在需要利用硬件加速、调用系统底层库或者实现高性能计算时。本教程将通过一个实际的JNI使用Demo源码,深入讲解JNI的关键概念和使用方法。 ### 1. C/C++调用Java 在...

    cocos2d-x 通过JNI实现c/c++和Android的java层函数互调-源码

    在Android应用开发中,Cocos2d-x是一个广泛使用的开源游戏引擎,它允许开发者使用C++编写游戏逻辑,同时提供了与Java交互的能力。本主题聚焦于如何通过JNI(Java Native Interface)来实现在Cocos2d-x中调用Java层的...

    android JNI学习

    对于Android开发者,尤其是底层开发人员,理解和掌握JNI是必不可少的技能。JNI允许开发者在Android应用中使用C/C++代码,这在处理性能敏感的计算、利用硬件加速或者调用已存在的C/C++库时非常有用。 1. **JNI基本...

    jni预习资料2

    JNI在Android开发中尤其重要,因为它是连接Java应用程序和C/C++原生代码的桥梁。Android NDK(Native Development Kit)是一组工具,允许开发者在Android应用中嵌入C/C++代码,从而利用JNI实现功能。 在JNI中,有两...

    Jni详细解析

    JNI在Android开发中的应用场景非常广泛,尤其当涉及到高性能计算时,由于Java本身运行效率的限制,开发者往往会通过JNI调用底层C/C++代码来实现。 #### 二、JNI的基本流程 1. **创建Android项目**:首先需要在...

    jni-bridge.rar_jni

    在Android开发中,JNI被广泛用于实现Java无法直接处理的功能,例如调用系统底层库、优化性能敏感的代码或者利用硬件特性。这个“jni-bridge.rar_jni”压缩包中的“jni-bridge.cpp”文件很可能包含了一个示例或实际...

    android jni 编程

    除了基本的数据类型操作之外,JNI还支持更复杂的数据结构处理,如数组、字符串等。例如,可以实现一个函数`concatStrings`来连接两个Java字符串。 ```c JNIEXPORT jstring JNICALL Java_JNIExample_concatStrings...

    JNI编程指南.zip

    JNI在Android开发中扮演着重要的角色,特别是在需要利用C++或C这样的本地代码来提升性能、接入硬件设备或者调用已有的库时。 在Android应用开发中,JNI的使用主要有以下几个方面: 1. **性能优化**:Java代码执行...

    JNI动态注册

    JNI在Android系统中扮演着重要的角色,因为它使得开发者能够利用C/C++的高效性能来编写部分底层代码,例如硬件加速或者访问特定平台功能。 在JNI中,有两种主要的函数注册方式:静态注册和动态注册。 1. **静态...

Global site tag (gtag.js) - Google Analytics