Android JNI详述
2010-07-15 20:31:00 来源:WEB开发网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
更多精彩
赞助商链接