JNI基本概念

一、简介

  • 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模拟环境
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值