`
rayloo
  • 浏览: 86647 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Android JNI开发入门篇

阅读更多

1. 有关JNI的类型方法表示,很多网友不明白,下面Android开发网就,基本上C层面的类型均是j+java过去的类型,比如字符串在JNI的c层面为 jstring而Java为String,对于布尔类型boolean则为jboolean对应Java中的boolean。

2. 有关Java类的表示在JNI中对应关系如下

long cwjInfo (int nAge, String sName, int[] arrSalary );

我们可以表示为 "(ILjava/lang/String;[I)J" 我们去除双引号,第一个(表示一个参数类型,接下来的I表示第一个参数为int整形,L代表是一个类class,这里为java/lang/String 这个类,接下来是[代表是一个数组,后面的I代表一个整形的数组,而)后面的J代表返回类型,在JNI中J代表long长整形,相关的对应关系如下:

V void
Z boolean
B byte
C char
S short
I int
J long
F float
D double
L fully qualified class
[ array type[]
( arg-types

3. Java层传入的String不能在JNI中直接转化为jstring,因为Java的内部编码为unicode,中英文的字符都是每个占两个字节,而 jni中我们需要使用utf-8来表示,utf-8比较特殊中英文是不等长的,比如英文等符号的ascii占用一个字节,而中文则为三个字节,同时仍然以\n结尾,所以下面这种错误的方法为

而正确的转换unicode到utf-8方法为使用GetStringUTFChars这个函数:

接下来我们还需要返回一个jstring类型的,我们可以让用户自己输入,比如

4. 在JNI中获取字符串的长度不能简单的使用strlen这样的函数,对于不同的处理我们可以通过 GetStringLength获取一个Java的unicode类型(wchar_t* )的字符串长度,或者GetStringUTFLength获取jni中的utf-8类型(char*)字符串长度。

5. 最后今天Android123给网友一个分辨处理jni还是java类型的技巧,有关jni相关的字符或字符串处理均带有utf关键字,

比如处理java的unicode类型的有:

GetStringChars/ReleaseStringChars GetStringLength NewString GetStringRegion

而对应jni的utf8类型的有:

GetStringUTFChars/ReleaseStringUTFChars GetStringUTFLength NewStringUTF GetStringUTFRegion

分享到:
评论

相关推荐

    Android JNI开发手册

    Android JNI开发手册涵盖了使用Java本地接口(Java Native Interface,JNI)进行Android平台应用开发的核心知识。JNI是一种编程框架,允许Java代码和其他语言写的代码(主要是C或C++)进行交互。本手册是Android开发者...

    hello-jni.rar_ android jni_android hello jni_android jni hellojn

    本篇文章将深入探讨Android环境下使用NDK进行JNI开发,并通过"hello-jni"项目作为实例,带领读者一步步走进Android NDK的世界。 一、Android NDK概述 Android Native Development Kit(NDK)是一组工具,它允许...

    Android之JNI初级篇

    2. **JNI开发环境**:介绍了如何设置开发环境,如在Windows上使用Cygwin_setup.exe安装Cygwin,这是一个模拟Linux环境的工具,使得开发者可以在Windows上使用gcc等命令行工具编译C/C++代码。 3. **JNI头文件生成**...

    Android 安卓 jni开发 MakeFile文件分析和编写

    本文所提供的知识点,可以帮助开发者快速入门和掌握Makefile的编写,从而高效地进行Android的JNI开发。需要注意的是,由于篇幅限制,这里只是对Makefile相关知识点的概述,更详细的内容需要开发者结合实际的开发场景...

    [转]好消息,android平台从froyo 2.2开始支持jni单步调试了

    标签“源码”和“工具”暗示了这篇博文可能会深入到源代码级别,讲解如何结合使用Android的NDK和其他工具来调试JNI代码。源码级别的调试对于理解底层工作原理和优化性能至关重要。同时,这也是一种工具使用技巧,...

    JNIDemo.zip

    本篇文章将通过一个简单的示例——JNIDemo,深入讲解Android JNI开发的基本流程,帮助初学者快速入门。 首先,我们需要了解JNI的基本概念。JNI是一个接口,使得Java代码可以调用本地(native)代码,本地代码通常是...

    android串口开发入门之搭建ndk开发环境及第一个jni调用程序

    本篇文章将引导初学者如何搭建Android NDK开发环境以及创建并调用第一个JNI程序。 **一、NDK环境搭建** 首先确保你已经安装了Android Studio。在Android Studio中搭建NDK环境非常简单。按照以下步骤操作: 1. ...

    Android 初学中阶高阶书籍_集合打包2

    Google.Android开发入门与实战,Android 精通Android游戏开发,3G应用开发之Android,15个Android很有用的代码片 段,Android 图像处理篇,Android_CTS测试研,GoogleMaps基础开发教程,Android_GPS架构分析,android_JNI...

    Android 初学中阶高阶书籍_集合打包3

    Google.Android开发入门与实战,Android 精通Android游戏开发,3G应用开发之Android,15个Android很有用的代码片 段,Android 图像处理篇,Android_CTS测试研,GoogleMaps基础开发教程,Android_GPS架构分析,android_JNI...

    Android NDK编程首个程序hello-jni

    本篇文章将深入剖析“hello-jni”这一经典的Android NDK入门示例,帮助读者理解和掌握Android原生编程的基础知识。 “hello-jni”项目是一个简单的示例,旨在引导开发者了解如何在Android应用中使用NDK。首先,我们...

    史上最全的android开发资料大集合

    《Android开发教程》、《Android基础教程》、《Google手机开发:Android程序员指南》、《Professional.Android.Application.Development.2009》、《Apress.Android.Essentials.Jul.2008》以及《Android开发入门与...

    Android代码-GraphicsTestBed

    Android JNI开发流程 Android JNI反射调用Java构造方法、成员方法和静态方法 OpenGLES OpenGL ES2.0入门之Android篇(一)——绘制三角形 Filter(此代码包含三个包如下:有三个对应的Activity,在...

    android NDK 开发总结

    6. 其他资源的提及:文档提到了一本关于Android开发的书《Google Android开发入门与实战》,这本书由靳岩和姚尚朗编写,由人民邮电出版社出版。书中不仅包含了小型案例,还包括了5个完整的商业实例及源码分析,这为...

    学习Android_NDK入门很简单

    《学习Android NDK入门很简单》这篇教程主要针对想要掌握Android NDK开发的初学者,旨在指导如何入门并开始使用NDK。NDK是Android开发中的一个重要工具,它允许开发者使用C/C++原生代码来编写部分应用,尤其适用于...

    android NDK入门篇----混合使用java和c/c++代码 源码工程

    在Android开发中,NDK(Native Development Kit)是一个重要的工具集,它允许开发者使用C/C++语言编写部分或全部应用程序,以实现高性能计算或者利用已有的C/C++库。本项目是一个关于Android NDK入门的实例,展示了...

    101人收藏史上最全的android开发资料大集合.doc

    18. 最后,还提供了《Google Android开发入门与实战随书视频》的链接,这是一套配套视频教程,帮助开发者通过实例学习。 这些资料覆盖了Android开发的各个方面,从基础到高级,包括SDK使用、图像处理、网络通信、...

    Android NDK入门

    这篇教程将引导你进入Android NDK的世界,帮助你理解其基本概念和使用方法。 NDK的核心功能在于提供了一个平台,使得开发者能够利用高性能的原生代码进行开发,这在处理计算密集型任务,如图形渲染、物理模拟或者...

    Android NDK开发示例

    这篇教程将深入探讨Android NDK开发,为初学者提供一个全面的入门指南。 NDK的核心功能是允许开发者在Android应用中集成高性能的本地代码,这对于处理计算密集型任务、游戏引擎、音视频处理和加密算法等场景尤其...

    jni资源,jni资源合计

    - **主要内容**:这是一个论坛帖子,其中包含了一些关于在Android平台上进行JNI开发的实战经验分享。这里不仅有详细的步骤指导,还有其他开发者们的交流和讨论,可以作为补充阅读材料。 - **价值点**: - 提供了一...

Global site tag (gtag.js) - Google Analytics