JNI学习

462人阅读 评论(0) 收藏 举报
分类:

1、JNI概述

JNI机制。

Java Native Interface 的缩写,实现了Java调用其他语言(如C/C++)的功能。

通过这种技术可以:

1)Java调用Native语言(C/C++)的函数

2)Native程序(C/C++)的函数可以调用Java层的函数

2、JNI的语法规则

1)将Java语言的数据类型转换成C/C++语言函数或方法。

Java 类型 本地 C 类型
实际表示的 C 类型
(Win32)
说明
boolean jboolean unsigned char 无符号,8 位
byte jbyte signed char 有符号,8 位
char jchar unsigned short 无符号,16 位
short jshort short 有符号,16 位
int jint long 有符号,32 位
long jlong __int64 有符号,64 位
float jfloat float 32 位
double jdouble double 64 位
void void N/A N/A

2)将Java语言的方法调用,转换为调用底层语言函数或方法。

函数签名。

具体的对应关系见下面两张图:

  

数组则以”["开始,用两个字符表示


2)函数对应关系的前面

项目 说明
Java函数格式 返回值  func(参数1,参数2,参数3)
函数签名格式 (参数1参数2参数3)返回值
注意 1、函数名,在JNI中没有体现出来
2、参数列表相互挨着,中间没有逗号,没有空格,返回值后面没有分号
3、返回值出现在()后面
4、如果参数是引用类型,那么参数应该为:

1、boolean isLenOn(void)

()Z

2、void setLedOn(int lenNo)

(I)

3、String substr(String str, int idx, int count);

(Ljava/lang/String;II)Ljava/lang/String


3、JNI的实现步骤

Java代码加载JNI的库

1)如果Java要调用native函数,就必须通过一个位于JNI层的动态库来实现。

2)通常的做法是在类的static语句中加载,调用System.loadlibrary的方法加载动态库。

3)Native函数需要在Java中用关键字native的形式声明

注册JNI函数签名

1)静态注册

2)动态注册














查看评论

Android中关于JNI 的学习(零)简单的例子,简单地入门

1)创建Java类文件,并定义Native方法,如JniTest类。 2)利用javac生成class文件,然后回到src目录,利用javah生成C/C++头文件,在这里要注意,javah命令要在包的...
  • foolsheep
  • foolsheep
  • 2014-05-06 13:12:14
  • 2193

JNI学习-android下JNI开发

android下JNI开发what 什么是JNI JNI java native interface native本地 java本地接口 通过JNI可以实现java和本地代码之间相互调用 jni可以...
  • Fighting_Boss
  • Fighting_Boss
  • 2017-04-07 16:13:02
  • 396

Android开发学习之路--NDK、JNI之初体验

好久没有更新博客了,最近一直在看一个仿微信项目,然后看源码并自己实现下,相信经过这个项目可以让自己了解一个项目中的代码以及种种需要注意的事项。不知不觉中博客已经快要40w访问量,而且排名也即将突破30...
  • eastmoon502136
  • eastmoon502136
  • 2016-02-28 17:46:31
  • 15320

【Android学习之】深入理解JNI

经过一周多的时间,这篇博客终于码完了。这篇博客主要是为了帮助大家深入理解JNI,写这篇博客主要是因为前段时间去面试,面试有道25分的简答题就是让我概述Android JNI 的调用过程,当时我就懵逼了...
  • u013132758
  • u013132758
  • 2016-06-16 12:55:06
  • 1233

JNI介绍及视频教程

JNI学习视频
  • java_7star
  • java_7star
  • 2013-12-25 16:30:50
  • 2117

jni相关书籍资料

  • 2008年05月07日 13:51
  • 1.34MB
  • 下载

JNI学习_Android开发

  • 2011年07月14日 16:31
  • 142KB
  • 下载

jni学习简单例子

最近看了些jni的东西,简单学着写了点,工程目录结构如图 首先主要java 类,代码如下: package jni; public class MyJni { static { ...
  • qq_32969313
  • qq_32969313
  • 2016-02-24 17:18:02
  • 562

JNI视频教程 笔记(一)

第1课
  • ymangu
  • ymangu
  • 2014-05-05 14:29:19
  • 928

通过Android JNI编程来学习三大结构的ARM汇编

有一段时间不更新了,不得不佩服人的惰性的强大,最怕水平底还比较懒得人,譬如我,哎,废话不说了,开始学习 目标:这篇文章主要是学习ARM汇编,通过JNI开发技术,编译出对应的SO文件,然后通过IDA分析...
  • feibabeibei_beibei
  • feibabeibei_beibei
  • 2016-05-18 16:43:50
  • 1027
    个人资料
    持之以恒
    等级:
    访问量: 8万+
    积分: 1841
    排名: 2万+
    博客专栏
    最新评论