首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NDK和JNI概要

NDK和JNI概要

作者头像
凌川江雪
发布2020-05-26 22:07:58
4710
发布2020-05-26 22:07:58
举报
文章被收录于专栏:李蔚蓬的专栏李蔚蓬的专栏

NDK简述

NDK:Native Development Kit(Kit n.配套元件)是一系列工具的集合 它提供了一系列的工具,帮助开发者快速开发C/C++的动态库 并能自动将so和Java一起打包成apk

JNI简述

JNI:Java Native Interface; JNI标准是Java平台的一部分, JNI是Java语言提供的Java和C/C++相互沟通的机制, Java可以通过JNI调用C/C++代码, C/C++代码也可以调用Java代码;

补充

  • NDK可以为我们生成C/C++动态链接库 JNI是Java和C/C++沟通的接口, 这两者与Android没有什么关系,只是Android是Java语言开发, 通过JNI可以实现与C/C++沟通, 所以可以使用NDK+JNI来实现“Java+C”的Android开发方式。

NDK工具目录简述

  • SDK目录下的ndk-bundle
  • toolchains是不同的CPU架构的指令集:

项目会通过toolchains进行编译;

  • platforms包则负责把程序编译成手机对应的版本:

为什么要NDK开发(NDK开发优点)

  1. 项目需要调用底层的一些C/C++的东西 (java无法直接访问到OS底层,如系统硬件等), 或者已经在C/C++环境下实现了功能代码(大部分现存的开源库都是用C/C++代码编写的),则直接使用即可; NDK开发常用于驱动开发无线热点共享数学运算实时渲染的游戏音视频处理文件压缩人脸识别图片处理等;
  2. 为了效率更加高效些,将要求高性能的应用逻辑使用C/C++开发, 从而提高应用程序的执行效率 但是C/C++代码虽然是高效的,在java于C/C++相互调用时却增大了开销
  3. 基于安全性的考虑。 防止代码被反编译,为了安全起见, 使用C/C++语言来编写重要的部分,以增大系统的安全性, 最后生成so库(用过第三方库的应该都不陌生)便于给人提供方便; (任何有效的代码混淆对于会smail语法的高手, 反编译apk都是轻而易举的)
  4. 便于移植。 用C/C++写的库可以方便在其他的平台上再次使用;
可以借助 source insight 这个工具对源码进行查看!
  • JNI其实就是一个头文件,jni.h, 定义了很多数据结构变量
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NDK简述
  • JNI简述
  • 补充
  • NDK工具目录简述
    • 为什么要NDK开发(NDK开发优点)
    相关产品与服务
    人脸识别
    腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档