Android源码分析---JNI浅尝
来源:互联网 发布:nodejs 官网cms 编辑:程序博客网 时间:2024/06/06 02:24
JNI=java native interface,是一种技术,通过这种技术可以做到:java代码调用C/C++代码,C/C++代码代用java代码
java层的代码,首先调用System.loadLibrary();然后调用声明为native的java函数,声明为native的函数JVM会去JNI库那里找对应的JNI函数调用
而JNI函数那边是用C/C++语言写的,故可以使用printf()这些函数,下面是一个简单例子:
class HelloWorld {public native void displayHelloWorld();static {System.loadLibrary("hello");}public static void main(String[] args) {new HelloWorld().displayHelloWorld();}}利用javah工具可以生成一个.h文件:
javah ?jni HelloWorld头文件的内容:/* DO NOT EDIT THIS FILE - it is machine generated */#include /* Header for class HelloWorld */#ifndef _Included_HelloWorld#define _Included_HelloWorld#ifdef __cplusplusextern "C" {#endif/** Class: HelloWorld* Method: displayHelloWorld* Signature: ()V*/JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif然后建立一个.c或者.cpp来包含这个头文件,就可以使用C/C++语言来写代码:
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) {printf("Hello world!\n");return;}
总结下就是先找出一个类中成员函数和成员变量的ID,然后用Call<Type>Method来根据函数ID来调用java层的函数,用Get<type>Field来获取成员ID的值,这样就在C/C++中调用了Java层的类成员了。
0 0
- Android源码分析---JNI浅尝
- android 浅尝JNI 打包so库
- android中jni加载流程源码分析
- [Android源码分析]jni层之下的配对分析
- Android framework源码之JNI实现过程分析
- [Android源码解析]Eventloop在jni层的分析
- [Android源码分析]蓝牙配对之jni之上的点点滴滴
- android 动态注册JNI函数过程源码分析
- android源码分析之JNI调用与回调
- android 移植 ffmpeg (二) 源码分析 JNI编程说明
- android源码分析之JNI调用与回调
- Android源码编译JNI
- android JNI 分析:
- Android JNI 分析
- Android JNI原理分析
- Android JNI原理分析
- Android JNI原理分析
- Android JNI原理分析
- C盘O字节
- 1007:A+B 输入输出练习VIII【JAVA实现】
- 福德宫的发生过大风歌
- 软件工程作业二
- 线程池NSoperationQueue和GCD比较
- Android源码分析---JNI浅尝
- ping: sendto: Network is unreachable
- 在C++中关于颜色值和十六进制字符串之间的转换
- mybatis相关知识
- debian 7 调整控制台分辨率
- UIApplication 用法解析
- 在电脑上安装Linux操作系统(ubuntu)
- 选择器UIPickerView
- WAMP两个小经验笔记