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

Android JNI详述

 2010-07-15 20:31:00 来源:WEB开发网   
核心提示:参数指定到包名前一级文件夹,文件夹层次结构要符合java 类的组织层次结构,Android JNI详述(7),javah -classpath ../jnitest/bin com.hello.jnitest.Naddcom_hello_jnitest_Nadd .h 文件:/* DO NOT EDIT THIS FI
参数指定到包名前一级文件夹,文件夹层次结构要符合java 类的组织层次结构。

javah -classpath ../jnitest/bin com.hello.jnitest.Nadd

com_hello_jnitest_Nadd .h 文件:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include

/* Header for class com_hello_jnitest_Nadd */

#ifndef _Included_com_hello_jnitest_Nadd

#define _Included_com_hello_jnitest_Nadd

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: com_hello_jnitest_Nadd

* Method: nadd

* Signature: (II)I

*/

JNIEXPORT jint JNICALL Java_com_hello_jnitest_Nadd_nadd

(JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus

}

#endif

#endif

3. 编辑.c 文件实现native 方法。

com_hello_jnitest_Nadd.c 文件:

#include

#include "com_hello_jnitest_Nadd.h"

JNIEXPORT jint JNICALL Java_com_hello_jnitest_Nadd_nadd(JNIEnv * env, jobject c, jint a, jint b)

{

return (a+b);

}

4. 编译.c 文件生存动态库。

arm-none-linux-gnueabi-gcc -I/home/a/work/android/jdk1.6.0_17/include -I/home/a/work/android/jdk1.6.0_17/include/linux -fpic -c com_hello_jnitest_Nadd.c

arm-none-linux-gnueabi-ld -T/home/a/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/lib/ldscripts/armelf_linux_eabi.xsc -share -o libNadd.so com_hello_jnitest_Nadd.o

得到libNadd.so 文件。

以上在ubuntu 中完成。

5. 将相应的动态库文件push 到avd 的system/lib 中:adb push libNadd.so /system/lib 。若提示Read-only file system 错误,运行adb remount 命令,即可。

Adb push libNadd.so /system/lib

6. 在eclipsh 中运行原应用程序即可。

以上在windows 中完成。

对于一中生成的so 文件也可采用二中的方法编译进apk 包中。只需在工程文件夹中建libsarmeabi 文件夹(其他文件夹名无效,只建立libs

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

Tags:Android JNI 详述

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