Android 高级开发 JNI & NDK 介绍与使用

前言

对于没接触过的领域,即是挑战也是机遇,不仅能够提升自己的能力。还能够学习到新的技术知识

而学习新的技术的时候,最好是从头开始按照体系学!比一直找快速解决的方法更好

看技术资料的同时,一定要首先去看官方最新的文档!因为可能因为 IDE 的升级 会有不同的使用配置更新!

在Android studio中开发NDK,NDK是Android底层的 一套开发工具包 c/c++库,然而要在java中调用c/c++的原生功能,则需要使用JNI来实现。

什么是JNI

JNI (Java Native Interface) 是java本地接口,它主要是为了实现 Java 调用c、c++等本地代码所封装的一层接口。大家都知道java是跨平台开发语言,它的狂平台特性导致与本地交互的能力不够强大,一些和操作系统相关的特性Java无法完成,所以Java提供了JNI用于和Native代码进行交互。通过JNI,Java可以调用c、c++,相反,c、c++也可以调用Java的相关代码。

JNI 实现 Java 调用 C 层的方法流程:
在这里插入图片描述

图引用来自JNA和JNI的对比

为什么要使用 JNI?
  1. 通过JNI 技术可以拓展手机Wifi热点
  2. coder 执行高效; 大量的运算(极品飞车) ;万能解码(ffmpeg) ;Opengl(3D渲染)
  3. 代码的复用:ffmpeg,opencv(人脸识别库) ,7-zip
#include "com_atguigu_jnitests2_JNIS.h"
JNIEXPORT jstring JNICALL Java_com_atguigu_jnitests2_JNIS_helloJNI
(JNIEnv * env, jobject jobj) {
return (*env)->NewStringUTF(env, "Hello from C");
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
怎么用Jni?

学习C语言-看懂代码

熟悉 Jni开发流程,在Android 熟悉使用 NDK

NDK介绍

定义:Native Development Kit,是 Android的一个工具开发包 NDK是属于 Android 的,与Java并无直接关系

作用:快速开发C、 C++的动态库,并自动将so和应用一起打包成 APK

即可通过 NDK在 Android中 使用 JNI与本地代码(如C、C++)交互

应用场景:在Android的场景下 使用JNI

即 Android开发的功能需要本地代码(C/C++)实现

JNI 是一种协议,相当于桥梁作用

​ Java Native Interface : java 本地开发接口

​ 通过JNI 可以让 java 与 C/C++ 代码实现互调

NDK 是Google 在Android 中提供的开发工具包

使用 NDK 编译代码主要有三种方法:

  • 基于 Make 的&nb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值