没有合适的资源?快使用搜索试试~ 我知道了~
android JNI
需积分: 3 2 下载量 109 浏览量
2011-10-23
19:12:32
上传
评论
收藏 9KB TXT 举报
温馨提示
试读
11页
android JNI 调用C代码 一些我写的代码
资源推荐
资源详情
资源评论
Android JNI
2010-11-18 00:59:23
java JNI
http://baike.baidu.com/view/1272329.htm
JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
JNI是Java Native Interface的缩写,译为Java本地接口。它允许Java代码和其他语言编写的代码进行交互。在android中提供JNI的方式,让Java程序可以调用C语言程序。android中很多Java类都具有native接口,这些接口由本地实现,然后注册到系统中。
主要的JNI代码放在以下的路径中:frameworks/base/core/jni/,这个路径中的内容被编译成库 libandroid_runtime.so,这是个普通的动态库,被放置在目标系统的/system/lib目录下。此外,android还有其他的 JNI库。JNI中的各个文件,实际上就是普通的C++源文件;在android中实现的JNI库,需要连接动态库 libnativehelper.so。
1,JNI的实现方式
实现JNI需要在Java源代码中声明,在C++代码中实现JNI的各种方法,并把这些方法注册到系统中。实现JNI的核心是 JNINativeMethod结构体。
typedef struct {
const char* name;
const char* signature;
void* fnPtr;
} JNINativeMethod;
第一个变量name是Java中JNI函数的名字,第二个变量signature用字符串描述函数参数和返回值,第三个变量fnPtr是JNI函数C指针。
在Java代码中,定义的函数由JNI实现时,需要指定函数为native。
2,在应用程序中使用JNI,可以通过代码中/development/samples/SimpleJNI来分析:
2010-11-18 00:59:23
java JNI
http://baike.baidu.com/view/1272329.htm
JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
JNI是Java Native Interface的缩写,译为Java本地接口。它允许Java代码和其他语言编写的代码进行交互。在android中提供JNI的方式,让Java程序可以调用C语言程序。android中很多Java类都具有native接口,这些接口由本地实现,然后注册到系统中。
主要的JNI代码放在以下的路径中:frameworks/base/core/jni/,这个路径中的内容被编译成库 libandroid_runtime.so,这是个普通的动态库,被放置在目标系统的/system/lib目录下。此外,android还有其他的 JNI库。JNI中的各个文件,实际上就是普通的C++源文件;在android中实现的JNI库,需要连接动态库 libnativehelper.so。
1,JNI的实现方式
实现JNI需要在Java源代码中声明,在C++代码中实现JNI的各种方法,并把这些方法注册到系统中。实现JNI的核心是 JNINativeMethod结构体。
typedef struct {
const char* name;
const char* signature;
void* fnPtr;
} JNINativeMethod;
第一个变量name是Java中JNI函数的名字,第二个变量signature用字符串描述函数参数和返回值,第三个变量fnPtr是JNI函数C指针。
在Java代码中,定义的函数由JNI实现时,需要指定函数为native。
2,在应用程序中使用JNI,可以通过代码中/development/samples/SimpleJNI来分析:
A,分析顶层 Android.mk文件
LOCAL_PACKAGE_NAME := SimpleJNI //生成PACKAGE的名字,在out\target\product\smdk6410\obj\APPS
LOCAL_JNI_SHARED_LIBRARIES := libsimplejni //生成JNI共享库的名字,在....smdk6410\obj\SHARED_LIBRARIES
include $(BUILD_PACKAGE) //以生成APK的方式编译
include $(call all-makefiles-under,$(LOCAL_PATH)) //调用下层makefile
B,分析 JNI目录下Android.mk文件
LOCAL_SRC_FILES:= \ //JNI的C++源文件
native.cpp
include $(BUILD_SHARED_LIBRARY) //以共享库方式编译
3,JNI的代码实现和调用
A,native.cpp内容
static jint add(JNIEnv *env, jobject thiz, jint a, jint b){} //定义JAVA方法add
static const char *classPathName = "com/example/android/simplejni/Native"; //目标JAVA类路径
static JNINativeMethod methods[] = { //本地实现方法列表
{"add", "(II)I", (void*)add },
};
剩余10页未读,继续阅读
资源评论
liu1061219100
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功