NDK和JNI概要

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, 定义了很多数据结构变量

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP | 常量 知识梳理与运用详析

    自定义常量是根据我们开发的需要而定义的常量,通过使用PHP中的函数define()定义。

    凌川江雪
  • Tip | 使用GitHubDesktop提交 本地existing项目

    点击File,下拉菜单中点击New Repository (或者直接Ctrl + N):

    凌川江雪
  • 01 详析一次腾讯一面 | 移动端开发岗

    URL realUrl = new URL(url); HttpURLConnection conn = (Htt...

    凌川江雪
  • JNI和NDK的区别

    android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等

    阳光岛主
  • 技术贴-JNI编程搭建Java与C+的桥梁(一)

    今晚北京的风很大,大到路边的ofo都一路向我贴服膜拜。好的吧,这是我今晚的心情,hhh,当我的Java程序抛出了C++算法的运算结果,一下子,我就跳了起来。如同...

    企鹅号小编
  • 传智播客C++学院教学总监朱景尧老师

    =============================================================================

    黑泽君
  • 如果用编程语言参加战争,哪门语言才是程序员的最强武器?

    自从计算机问世,各种编程言语也随之降生,作爲程序猿,Java、Python和C++是必学的三种编程言语,但有时难免疑惑:这三种言语终究孰优孰劣? 那麼无妨读一读...

    企鹅号小编
  • 盘点下那些年我们用过的编程工具IDE都有哪些

    时间过得真快啊,昨天我们还是初高中的小屁孩,计划着明晚的“翻墙”上网大计,今天一晃大学就要毕业啦。当年你喜欢上的那个发小,现在早已是几个孩子的妈了,去山东找的也...

    短短的路走走停停
  • C#脚本实践(六): 脚本相对于C++的优势

    逍遥剑客
  • 标星2k star《C++那些事》,专辑及多入口公告

    今天,迎来了第一波github项目 2k star,还是蛮激动的,不管是自己学习,还是对周围认识的同学来说,都是一个很好的项目,本项目目前开设了4大入口供大家学...

    公众号guangcity

扫码关注云+社区

领取腾讯云代金券