当前位置: 首页 > web >正文

Android 中的 NDK 到底是什么?(详细解析+案例实战)

NDK 提供了一系列的工具,帮助开发者快速开发 C (或 C++ )的动态库,并能自动将 so 和 java 应用一起打包成 apk;这些工具对开发者的帮助是巨大的

什么是 NDK ?

Android 原生开发包 NDK(Native Delopment kits )将用于 Android 平台上的 C++ 开发

Android NDK 是 Android 软件开发包(SDK)的相关工具集,用来扩展 Android SDK 的功能,从而是开发人员能够使用机器代码生成的编程语言(如 C、C++ 和汇编语言)实现一些对代码行要求较高的模块并将这些模块嵌入到 Android 应用程序中

众所周知,Android 程序运行在 Dalvik 虚拟机中,NDK 允许用户使用类似 C / C++ 之类的原生代码语言执行部分程序

NDK 的定义

  • Android NDK 不是一个单独的工具: 它是一个包含API、交叉编译器、链接程序、调试器、构建工具、文档和实例应用程序的综合工具集
  • 在 Android 的官方文档上是这么解释 NDK 的:“原生开发套件 (NDK) 是一套工具,使您能够在 Android 应用中使用 C 和 C++ 代码,并提供众多平台库,您可使用这些平台库管理原生 Activity 和访问物理设备组件;例如传感器和轻触输入”
  • NDK 是一个 Android 官方提供的一个开发套件与 Android SDK 相对应,NDK 是原生开发套件,而 SDK 是 JAVA 开发套件。NDK 使得 Android 应用可以利用 C++ 语言高效的计算性能,进一步提升App的性能,降低延迟。

说道这里,大家肯定要问 NDK 有那些应用场景,我为什么要用 NDK 呢,用 JAV 不行吗?

下面列举一些NDK 的应用场景

重用一些现成的库,例如已经用 C/C++ 编写好的 openCV 库
前面提到的高性能计算,例如很多 Bitmap 的处理到放在 NDK 进行处理
一些敏感信息的保护,例如密钥等信息(密钥等信息还是要经过加盐才能放到 NDK 中,不然还是
会有别反编译的风险)
知道了应用场景,大家肯定已经摩拳擦掌准备试一试了,先别着急。欲善其事,先利其器;以下给出了开发 NDK 的三大利器;

NDK 的三大开发组件
  • NDK  Android 原生开发套件

  • CMAKE 外部编译工具

  • LLDB  原生代码调试工具

NDK 开发优点

  • 利用 NDK 开发的库,不容易被反编译,保密性,安全性都提高了
  • 很多开源工程和大工程都是 C/C++ 代码写的
  • C/C++ 的代码运行速度和效率都比 Java 快很多

Android NDK 开发步骤

(1)JNI 接口设计;
(2)使用 C/C++ 本地实现方法;
(3)生成动态链接库;
(4)将动态链接库复制到 Java 工程,运行 Java 程序

NDK 基础实践

CMake

推荐使用 CMake 而不是传统 NDK-build 的方式,既然都用新的,自然有它的道理,简单方便
有很多人在配置 CMakeLists.txt 时编译不通过,是自己的问题吗?当然,难不成还是它的问题吗?</

http://www.xdnf.cn/news/11803.html

相关文章:

  • 嵌入式迅为4412开发板学习开发从零开始嵌入式入门
  • LBS(基于位置服务(Location Based Service))
  • matlab从投影重建图像,由投影重建图像
  • web测试----死链检查(Xenu)
  • echarts柱状图,柱体使用图片显示vue
  • 以太坊P2P网络及节点发现机制
  • 免费域名和空间搭建个人网站——服务器篇
  • 第5章 彩色数字图像基础
  • 搜索引擎提交入口,导航站登陆入口大全
  • Windows App开发之常用控件与应用栏
  • 网关协议
  • 手把手教你破解无线路由器密码
  • 私有云平台下的存储架构规划设计
  • 安阳工学院c语言期末考试题库,安阳工学院期末C语言答案.doc
  • 纯小白从0开始root小米手机(MIUI14)及隐藏root使用银行app
  • 怎么制作GIF动图?教你这几个简单方法
  • 圣安地列斯2.0汉化补丁_[只知道圣安地列斯有热咖啡,没想到《GTA5》也这么污...
  • 【强烈推荐】基于stm32的OLED各种显示实现(含动态图)
  • MathType 数学公式编辑器[Baidu]
  • Ext.Net-----GridPanel (属性|方法|配置|详细介绍)
  • 陈建宝同志被授予“2021中国经济年度人物“荣誉称号
  • 浅谈显 ipqq 发展历程 【附显 ipqq原理】
  • 一个可以重复遍历的RowSet
  • 解决系统缺少Windows.Web.Http.dll文件无法启动程序问题
  • 基于Ajax的应用程序架构汇总(一)
  • 如何创建sis文件——概叙
  • Windows操作系统深入解析原理
  • 手把手教你怎么搭建属于自己的服务器(保姆级教程)
  • 第十八届全国大学生智能车竞赛全国总决赛获奖信息
  • 如何阻止QQ右下角弹出新闻框