WEB开发网
开发学院手机开发Android 开发 Android JNI详述 阅读

Android JNI详述

 2010-07-15 20:31:00 来源:WEB开发网   
核心提示:J jlong longD jdouble doubleF jfloat floatB jbyte byteC jchar charS jshort short数组则以"[" 开始,用两个字符表示[I jintArray int[][F jfloatArray float[][B jbyteArra

J jlong long

D jdouble double

F jfloat float

B jbyte byte

C jchar char

S jshort short

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

[I jintArray int[]

[F jfloatArray float[]

[B jbyteArray byte[]

[C jcharArray char[]

[S jshortArray short[]

[D jdoubleArray double[]

[J jlongArray long[]

[Z jbooleanArray boolean[]

上面的都是基本类型。如果Java 函数的参数是class ,则以"L" 开头,以";" 结尾,中间是用"/" 隔开的包及类名。而其对应的C 函数名的参数则为jobject. 一个例外是String 类,其对应的类为jstring

Ljava/lang/String; String jstring

Ljava/net/Socket; Socket jobject

如果JAVA 函数位于一个嵌入类,则用$ 作为类名间的分隔符。

例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z"

Android JNI 编程实践

一、直接使用java 本身jni 接口(windows/ubuntu )

1. 在Eclipsh 中新建一个android 应用程序。两个类:一个继承于Activity ,UI 显示用。另一个包含native 方法。编译生成所有类。

jnitest.java 文件:

package com.hello.jnitest;

import android.app.Activity;

import android.os.Bundle;

public class jnitest extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Nadd cal = new Nadd();

setTitle("The Native Add Result is " + String.valueOf(cal.nadd(10, 19)));

}

}

Nadd.java 文件:

package com.hello.jnitest;

public class Nadd {

static {

System.loadLibrary("Nadd");

}

public native int nadd(int a, int b);

}

以上在windows 中完成。

2. 使用javah 命令生成C/C++ 的.h 文件。注意类要包含包名,路径文件夹下要包含所有包中的类,否则会报找不到类的错误。classpath

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Android JNI 详述

编辑录入:coldstar [复制链接] [打 印]
赞助商链接