jni记录

原创 2012年03月23日 23:00:35

  jni学了好几次了,每次学了点基础就忘了,这次记录下来以备查找。

    1,首先创建一个目录,可以用eclipse创建,也可以手工创建。

      

     2,在src目录下创建包结构,编写java层代码。

package com.test.jni;

public class Jnitest {
	static {
		System.loadLibrary("hello");
	}

	public static native void print();

	public static void main(String[] args) {
		System.out.println("Hello,World");
		print();
	}
}
      3,使用命令行进入src目录,使用javac编译java代码,然后在bin\classes\目录下会生成Jnitest.class文件

       4,使用命令行进入bin\classes\目录下,使用  javah -d ..\..\lib  com.test.jni.Jnitest, 会在lib目录下生成com_test_jni_Jnitest.h文件。


        5,拷贝com_test_jni_Jnitest.h文件到linux环境下,创建com_test_jni_Jnitest.c文件

#include<stdio.h>
#include "com_test_jni_Jnitest.h"
/*
 * Class:     com_test_jni_Jnitest
 * Method:    print
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_test_jni_Jnitest_print
  (JNIEnv *env, jclass class){
	printf("Hello world from jni");
}

       6,编译so文件,其中 gcc参数 -I表示头文件所在目录

gcc com_test_jni_Jnitest.c -I/usr/lib/jvm/java-6-sun/include/ -I/usr/lib/jvm/java-6-sun/include/linux -fPIC -shared -o libhello.so

7,将生成的so文件拷到工程lib下面

8,在linux系统下 进入bin/classes 目录下 ,运行 其中-D指定了java寻找so的路径。
java -Djava.library.path="../../lib/" com.test.jni.Jnitest 

   输出结果如下:Hello,World
Hello world from jni

















                

Android 4.4.2 动态添加JNI库方法记录 (一 JNI库层)

欢迎转载,但必须注明出处。 本篇是继《s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录》之后的另外一种添加JNI和服务的方法。 前面的方法是直接把HAL和服务...
  • u010406724
  • u010406724
  • 2015年03月19日 14:42
  • 2150

JNI记录

基础: http://blog.csdn.net/xyang81/article/details/42066665   http://blog.csdn.net/conowen/article/de...
  • jgzsygg
  • jgzsygg
  • 2017年08月06日 16:04
  • 153

工作记录--jni小问题

android jni头文件生成: 命令行生成 生成jni的命令:   E:\eclipse workspace\MyFaceJniTest\src\com\facedetect\native...
  • u013547134
  • u013547134
  • 2014年07月25日 16:40
  • 755

JNI基本知识,做记录

我自己写JNI的基本流程, 1.首先编写java部分的JNI接口public class JNIInterface { public native String sayHi(); public n...
  • u011926427
  • u011926427
  • 2013年09月02日 11:20
  • 151

JNI HelloWorld 简单记录

需要用到JNI ,复习一下. 上马: public class HelloWorld{ public native void sayHi(); static { System.lo...
  • acnt3w
  • acnt3w
  • 2013年02月19日 11:23
  • 1472

JNI 线程问题记录

1.http://www.bkjia.com/Androidjc/538110.html
  • zdy10326621
  • zdy10326621
  • 2016年07月28日 12:00
  • 126

JNI通用方法记录

转载请标明出处:http://blog.csdn.net/u013254166/article/details/79085463 本文出自: 【rhino博客】 1. 调试打印日志cl_log...
  • u013254166
  • u013254166
  • 2018年01月17日 15:04
  • 25

jni编程细节记录

相信做jni开发的人都知道,jni是什么意思,接口本地调用。 本文记录下本人在开发中关于jni编程中用c++代码编写的简单调用以及复杂数据的调用等等会遇到的一些问题已经解决办法 1、jni...
  • u012808234
  • u012808234
  • 2016年06月17日 17:56
  • 248

android JNI测试记录

JNI分静态注册和动态注册,这里测试动态注册 库文件的生成 Android.mk文件 include $(BUILD_EXECUTABLE) include $(CLEAR_VARS) L...
  • f23505106
  • f23505106
  • 2012年09月26日 17:42
  • 343

JNI初探记录

一直听说JNI开发,但是没有实践过,初次试验,记录一下。 jni的实现简而言之就是: java有一个native接口,c/c++语言实现接口,生成库,java再调用。 废话不多,直接步骤: 1:下载a...
  • u010513497
  • u010513497
  • 2015年01月30日 09:00
  • 316
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jni记录
举报原因:
原因补充:

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