WEB开发网
开发学院手机开发Android 开发 在Android中嵌入C语言程序 阅读

在Android中嵌入C语言程序

 2010-08-23 01:33:00 来源:WEB开发网   
核心提示:B jbyte byteC jchar charS jshort short数组则以"["开始,用两个字符表示[I jintArray int[][F jfloatArray float[][B jbyteArray byte[][C jcharArray char[][S jshortArray

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参数指定到包名前一级文件夹,文件夹层次结构要符合java类的组织层次结构。

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

Tags:Android 嵌入程序

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