上次玩JNI大概是一年前的事情了,发现现在用还需要查资料,真是好记性赢不了三寸烂笔头,刚好用这个了,记下以后省的找资料了。
一、准备环境
只列出我这次测试用到的环境和工具:
1. jdk
Version: 1.7
2. eclipse
Version: Kepler Service Release 1
Build id: 20130919-0819
3. visual studio 2012
4. ant
Version 1.9.2
想对目前来说都是比较新的版本
二、编写java类
package cn.tang.demos.jni; public class JNITest { public native int callMethod(int i,String s1); }
三、编译和生成.h头文件
1.通过cmd命令生成
2.通过ant 脚本生成
<project name="JNI Builder" default="build" basedir="."> <target name="init" depends="clean"> <property name="project-src" value="${basedir}/src" /> <property name="jni-folder" value="cn/tang/demos/jni" /> </target> <target name="complie" depends="init"> <mkdir dir="build" /> <javac srcdir="${project-src}" destdir="build" debug="true" deprecation="off" encoding="UTF-8"> <include name="${jni-folder}/**/*" /> <exclude name="${jni-folder}/JNITestMain.*" /> <classpath> </classpath> </javac> </target> <target name="build" depends="complie" description="Builds .h header file"> <javah destdir="build" classpath="build" > <class name="cn.tang.demos.jni.JNITest"/> <class name="cn.tang.demos.jni.JNITest2"/> </javah> </target> <target name="clean" description="Removes all generated artifacts"> <delete dir="build" /> </target> </project>
简要说明,源代码文件夹下有三个文件分别是JNITest.java,JNITest2.java,JNITestMain.java ,最后一个文件是main 方法的测试类,所以在编译成class文件的时候被我去掉了,所以最后生成只有两个.h文件。
四、创建dll项目
1.创建一个DLL的项目
2.修改项目设置,最好debug 和release都修改下
3.删除额外的文件
五、根据头文件编码生成dll
1.首先加入头文件依赖的头文件
2. 根据头文件的函数声明实现函数
#include "cn_tang_demos_jni_JNITest.h" #include <stdio.h> JNIEXPORT jint JNICALL Java_cn_tang_demos_jni_JNITest_callMethod (JNIEnv * env, jobject jo, jint ji, jstring js){ printf("jstring is %s",js); return ++ji; }
3. 编译生成dll
build 即可
六、使用dll
package cn.tang.demos.jni; public class JNITestMain { public static void main(String[] args) { System.load("D:\\workspace\\project\\MyTest\\Release\\JNITest.dll"); // System.loadLibrary("JNITest"); int ret=new JNITest().callMethod(19, "hello"); System.out.println("ret is "+ret); } }
相关推荐
下面将详细介绍Android JNI开发的各个步骤。 #### 二、步骤详解 ##### 1. 新建Android工程 - 打开Android Studio或Eclipse for Android Developers。 - 创建一个新的Android项目,选择合适的项目模板,如“Empty ...
下面是 JNI 开发的详细步骤: Step 1:环境搭建 首先,需要安装 Cygwin 和 Android NDK。Cygwin 是一个 Unix 模拟器,可以在 Windows 平台上运行 Unix 命令。Android NDK 是 Android 官方提供的native开发工具包,...
在Linux环境下使用JNI,通常涉及到以下步骤: 一、环境准备 在开始之前,确保你已经安装了JDK,因为JNI开发需要用到javah工具。同时,还需要一个C/C++编译器,如GCC,用于编写和编译本地方法。 二、创建Java类 ...
### JNI编写步骤详解 #### 一、概述 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在Android开发中尤其重要,因为这使得开发者可以在性能要求较高的场景下...
本教程将围绕"Android JNI开发步骤"展开,详细介绍如何在Eclipse环境中进行JNI开发。 首先,我们需要创建一个Android项目。打开Eclipse,选择"File" -> "New" -> "Android Project",填写项目名称和目标SDK版本,...
JNI(Java Native Interface)技术是Java平台提供的一种接口,允许Java代码和其他语言写的代码进行交互。在嵌入式软件开发中,JNI起到了桥梁的作用,它连接了Java虚拟机(JVM)与本地(非Java)代码,使得开发者可以...
理解什么是 JNI JNI的操作步骤 JNI的适用场合
### Android Studio JNI集成步骤详解 #### 一、JNI简介与应用场景 JNI(Java Native Interface)是一种标准接口,允许Java代码和其他语言(如C、C++)编写的代码进行交互。在Android开发中,JNI通常用于实现性能...
### Jni详细解析 #### 一、Jni简介与应用场景 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码与其他语言写的代码进行交互。JNI在Android开发中的应用场景非常广泛,尤其当涉及到高性能计算...
**使用JNI编程**涉及以下步骤: 1. **声明本地方法**:在Java类中声明native关键字修饰的本地方法,但不提供实现。 2. **生成头文件**:使用javah工具,根据Java类中的本地方法声明生成对应的C/C++头文件。 3. **...
本教程将通过一个简单的实例,详细介绍如何在Android项目中调用JNI。 一、JNI简介 JNI是Java平台标准的一部分,它为Java程序员提供了一个接口,可以使用本地代码(如C/C++)来扩展Java应用程序。JNI使得开发者能够...
下面将详细介绍这个主题涉及的关键知识点。 1. **JNI基础**: JNI为Java应用程序提供了一种方法来调用本地(非Java)代码,反之亦然。开发者通常使用JNI来利用已有的C/C++库,或者实现需要高效计算的部分。在...
使用JNI时,主要涉及以下几个步骤: 1. **声明Native方法**:在Java源码中,使用`native`关键字声明方法,不提供具体实现。 2. **生成JNI头文件**:使用`javah`工具,输入.class文件,生成对应的C/C++头文件,该...
以下是使用Android Studio 2.3.2进行JNI开发的详细步骤: 1. **创建项目** 首先,打开Android Studio并创建一个新的Android项目。选择"Empty Activity"模板,并为项目命名,例如"JNIDemo01"。 2. **添加JNI支持**...
本教程将详细介绍如何通过JNI在Java中调用DLL的完整步骤。 1. **创建Java类和本地方法** 首先,在Java项目中创建一个类,声明需要调用DLL中的本地方法。这些方法需要使用`native`关键字标记,并在对应的`native`...
2. **JNI的使用步骤** - **编写Java代码**:首先定义一个Java类,声明native方法,这些方法将在本地代码中实现。 - **生成头文件**:使用`javah`工具,根据Java类生成包含C/C++函数原型的头文件。 - **编写本地...
### JNI-API详细说明 #### 一、概述 Java本地接口(Java Native Interface,简称JNI)是一种重要的编程技术,它允许Java代码与用其他语言(如C、C++和汇编语言)编写的本地代码进行交互。JNI的核心优势在于其灵活...
使用JNI时,开发流程通常包括以下步骤: 1. **编写本地方法**:在Java类中声明native方法,并使用`native`关键字。 2. **生成JNI头文件**:使用`javah`工具,根据Java源代码生成对应的C/C++头文件,这个文件会包含`...
### Eclipse Android NDK JNI 详细开发流程 #### 一、前言 在进行Android应用开发时,有时我们需要利用原生代码(通常是C/C++)来提高应用性能或访问某些特定硬件资源,这时就需要用到NDK(Native Development Kit...