JNI基本概念
2015-11-21 23:13
246 查看
一、简介
java是跨平台,C与平台有关,但是C与底层交互性能好Java Native Interface:Java本地接口,实现java和本地语言c/C++相互调用
二、为什么需要jni
C/C++作为本地语言,效率有保证,所以应用场景有如下方面:1. 操作底层硬件,android设备上的传感器,距离传感器
2. 应用程序要求效率高,图形渲染,音视频解码
3. 应用程序要求比较高,金融相关,军工产品 ,关键逻辑用C/C++;
4. 复用C/C++开源软件
5. 利用公司之前代码
三、使用JNI的四个前提
熟练使用java了解C基础语法
熟悉JNI规范
掌握开发工具NDK
四、jni.h文件内容
typedef struct JNINativeInterface* JNIEnv; struct JNINativeInterface { ... jclass (*FindClass)(JNIEnv*, const char*); ... JNIEnv *env; // env <=> JNIEnv * <=> struct JNINativeInterface** // (**env).FindClass(); // (*env)->FindClass();
五、jni相关概念
交叉编译在一个平台上为另一个平台编译程序。不同的操作系统windows Mac OS X Linux;不同处理器架构 x86 ARM Mips
工具链
编译本地代码过程依次使用工具,顺序使用形成链条arm-linux-gcc
函数库
实现某类功能函数二进制代码集合.使用库需要两个文件 .h头文件 还有库文件(.a .so), stdio string
静态链接库 .a 只用在链接过程拷贝库中代码,运行程序不需要静态库支持
动态链接库 (共享库) .so 用在链接过程记录用到什么库的什么函数,运行程序之前需加载动态库到内存。
六、 jni开发使用的工具
NDK : Native Development kit 本地开发工具集 构建和编译本地c/c++代码一套工具CDT : C/C++ Development Tools 编辑本地源文件,语法检查,编译工具调用
CygWin : windows下提供类unix模拟环境
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android使用Jni实现压力锅数据检测效果示例
- JAVA中JNI的简单使用分享
- c++ mk文件出错Jni调用产生java.lang.UnsatisfiedLinkError错误解决方法
- 解析Java的JNI编程中的对象引用与内存泄漏问题
- 安卓应用开发通过java调用c++ jni的图文使用方法
- Java调用c++库
- Android App 增量更新实例(Smart App Updates)
- 每周总结20130814——Android NDK环境的搭建和使用,YUV420SP格式图像的处理
- Android NDK开发简介
- Android NDK开发之Jni的数据类型
- Android NDK开发之数组类型的操作
- Android NDK开发之Jni调用Java对象
- JNI中参数的传递与操作
- Android JNI 机制
- JNI Java 向C传送字符串尝试-附代码
- android JNI 调用
- [android底层]JNI字段描述符