Android JNI如何将Java和Native对应
来源:互联网 发布:java web start 5.0 编辑:程序博客网 时间:2024/06/01 07:14
我们都知道Android的FrameWork以Java语言来实现,上层app都是通过java接口调用实现功能,而下层的库都是通过C/C++来实现。我们还是来看下Android的架构图,
其中的Application和FrameWork都是Java代码,其下的Library是C++代码,如何来实现java代码转调C++代码,其中jni做了很多工作。
先看下Jni的使用实例:
1.
package com.example.myapp;
public class media {
static {
System.LoadLibrary("mymedia");
}
public native void Decode() ;
}
JNIEXPORT void JNICALL Java_com_example_myapp_Decode()
{
}
这两个函数是如何对接上的呢?
在Jni.h文件中有个结构体JNINativeMethod,实现两者之间的对应关系:
typedef struct {
const char* name;//java函数名
const char* signature; //Java函数的签名信息
void* fnPtr; //指针地址
} JNINativeMethod;
在定义一组上面的对应关系后,再将此组变量给JNIEnv变量注册,实际上就是填写在一个函数对应表当中,以后java代码调用到Native Decode()方法,查当前env的函数对应表,找到与签名相匹配的函数地址,再调用到C++函数。
通过调用AndroidRuntime::registerNativeMethod(JNIEnv* env, const char* classname, const JNINativeMethod* method, int numMethods),将上述结构体内容注册到线程环境变量中。
此函数放在AndroidRunTime.h中声明,但外部引用不到,所以外部不能用。只能在framework之下使用。
- Android JNI如何将Java和Native对应
- Android java数据类型和jni数据类型对应关系
- Android JNI初步☞Java方法和native方法关联
- Android JNI-Native 基本类型对应关系
- Android JNI-Native 基本类型对应关系
- Android Studio Jni开发(二)实现Native调用java方法和Native调用Android API
- JNI: native bindings to java within android
- Android JNI(java native interface) 学习笔记
- android jni native 与java 交互
- Android JNI(java native interface) 学习笔记
- Java中的native关键字和JNI浅析
- java的native方法和JNI
- 如何在Android源码里查找Java中native方法对应的C++实现
- android JNI学习之四 JNI java c对应关系
- [Android] Jni中C++和Java的数据类型的对应关系
- 如何在Eclipse中生成Native类对应的JNI的.h文件
- android JNI bridge ----- native和java世界的红娘 (施工中)
- android JNI native 编程
- The content of the adapter has changed but ListView did not receive a notification终极解决方法
- 监控storm 的 作业收发数据情况
- git-daemon
- 生成ssh key
- 十大前端开发框架(下)
- Android JNI如何将Java和Native对应
- Jquery mobile的动态化
- hadoop 使用log4j日志
- 如何:使用 SQL Server 数据库项目或服务器项目进行调试
- js 改变元素的位置
- WPF简览
- cocos2d 坐标系使用
- GetLastError返回值
- java对数据的存储管理