JNI

转载 2013年12月05日 14:57:24

1、编写Java代码

首先我们需要编写自己的java代码

public class Hello {
    static{
        System.loadLibrary("hello-jni");
    }

    public native String sayHello();
}

2、把写好的类转换成.class文件,在src目录下运行

src>javac com/example/jnitest/Hello.java

会在com/example/jnitest/目录下生成Hello.class文件

3、把.class文件转换成头文件

src>javah com.example.jnitest.Hello

会在src/目录下生成com_example_jnitest_Hello.h文件

native方法名称转换详解:转换后的native方法全部以Java_为前缀,接着以类的全名标识(包名+类名),以下划线为分隔符(“_”),最后就是方法的名称

4、编写.c文件,包含第三步生成的.h文件,并实现里面的方法

#include "com_example_jnitest_Hello.h"
JNIEXPORT jstring JNICALL Java_com_example_jnitest_Hello_sayHello  (JNIEnv *env, jobject object)
  {
  		return (*env)->NewStringUTF(env, "JNITest Native String");
  }

5、安装NDK,其实就是找个地方解压。

6、编译.h和.c文件

在工程目录下建一个jni目录,将.h和.c文件都放到这目录下,再在jni目录下建一个android.mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := bigdata-jni
LOCAL_SRC_FILES := com_example_fullram_BigDataOccupy.c

include $(BUILD_SHARED_LIBRARY)

在工程目录下运行

JNITest>E:\android-ndk-r8\ndk-build.cmd

如果没有编译错误,会在libs/armeabi/目录下生成libbigdata-jni.so

7、在工程调用,新建Hello的实例,调用方法。

new Hello().sayHello()







JNI开发(1)——概述、环境搭建、必要知识点

JNI开发(1)——概述、环境搭建、必要知识点JNI开发(2)——开发流程实战同学们,笔者作为一名资深老司机,向大家郑重承诺:“文章的最后会有福利发放,请自备纸巾!!!” 以下是整个 “JNI开发”的...
  • sinat_15877283
  • sinat_15877283
  • 2016年04月21日 22:43
  • 3120

jni返回byte[]

jni返回byte[]
  • jacke121
  • jacke121
  • 2017年03月11日 15:58
  • 612

JNI 的多线程

之前的博文中讲述了JNI的基础知识: Java 类型和C/C++类型的转换 cygwin + gcc+makeFile入门(三): JNI的编译 这两篇文章讲述了JNI最普遍的两个问题, 环境的建立以...
  • ostrichmyself
  • ostrichmyself
  • 2010年05月25日 21:21
  • 13229

jni进行文件读取

用jni进行文件读写 1、Java代码写native方法如:publicnative String getFromC(String path); 2、生成头文件:在AndoridStudio的Term...
  • KeepMovingWZC
  • KeepMovingWZC
  • 2017年02月15日 11:59
  • 1064

JNI官方中文资料

声明 该篇文章完全引用自《JNI完全手册》完整版,用来方便查询查阅,同时作为该系列教程的基础知识。感谢原文档作者。 文档所依赖的版本是比较低的,但是恰恰是低版本才能更容易上手学习。文档也有些枯燥,适合...
  • yishifu
  • yishifu
  • 2016年08月11日 10:42
  • 1630

Android之从零开始JNI研发

本篇几乎没有涉及C/C++与java之间变量以及语法等等一些知识点,这些会在下篇来介绍。本人也是在学习探索过程中,如果有错误希望大家指出来。...
  • xiaohanluo
  • xiaohanluo
  • 2017年02月15日 14:45
  • 1810

JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系

当我们在调用一个Java native方法的时候,方法中的参数是如何传递给C/C++本地函数中的呢?Java方法中的参数与C/C++函数中的参数,它们之间是怎么转换的呢?我猜你应该也有相关的疑虑吧,咱...
  • xyang81
  • xyang81
  • 2014年12月20日 23:00
  • 8787

JNI 传递数据

1.通过JNI,java能够调用  C/C++函数,也能在C/C++ 里面调用 java 方法    Java Language Type Native Type Description ...
  • ym19860303
  • ym19860303
  • 2013年08月09日 01:14
  • 3189

JNI 调用的步骤

JNI
  • xiaopihair123
  • xiaopihair123
  • 2016年11月19日 19:06
  • 1197

JNI中新建文件、读写普通文件和驱动文件的方法综述fopen/open/creat/

这段时间的JNI开发中发现,在JNI中,普通文件的新建、读写既可以用C库函数,也可以用linux系统函数,如下: 平台android 4.4.2 编译工具ndk static int write...
  • luoyouren
  • luoyouren
  • 2015年11月11日 11:33
  • 2638
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JNI
举报原因:
原因补充:

(最多只允许输入30个字)