NDK学习

作者: Dream_Book | 来源:发表于2019-12-10 12:14 被阅读0次

Android 开发官网介绍

什么是NDK:

Native Develop Kit ,Android NDK 是一套允许您使用 C 和 C++ 等语言,以原生代码实现部分应用的工具集。在开发某些类型的应用时,这有助于您重复使用以这些语言编写的代码库。

NDK还提供交叉编辑器,只需要修改mk文件就可以生成特性的CPU平台的动态库。

  • NDK可能不适用于大多数只需要使用Java代码和框架API来开发其应用程序的Android新手。

什么时候使用NDK:

  • 进一步提升设备性能,以降低延迟,或运行计算密集型应用,如游戏或物理模拟。
  • 重复使用您自己或其他开发者的 C 或 C++ 库。
  • 在平台之间移植其应用。
  • 提高代码的安全性。由于SO库的反编译难度较大。

什么是JNI:

Java 原生接口( Java Native Interface ),是Java调用C++的规范。Java的优点是跨平台,其跨平台性导致其本地交互能力不够强大,一些和操作系统相关的操作无法完成,于是Java提供了JNI专门用于和本地代码交互(JNI并不是Android独有的东西),通过JNI,Java可以调用C/C++所编写的本地代码。

  • 通过NDK可以在Android中更加方便地通过JNI来访问本地代码

armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64是什么东西:

Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI( armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64 )。

  • ARM :是嵌入式中的一种架构,全称为Advanced RISC Machine,可以理解为ARM处理器。
  • ABI(Application Binary Interface):应用程序二进制接口 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口。
  • ABI和CPU(ARM)关系:
    大部分cpu都支持多于一种的ABI。
    当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。


    ABI和CPU的关系图

理论上说armeabi支持在 armeabi,armeabi-v7a,arm64-v8a下运行,也支持部分x86。而市面上基本没有mips架构的手机,所以理论上一个armeabi 就支持所有的手机了。armeabi运行在v7 v8 下只是效率会有偏差。But---看看这个

相关文章

网友评论

      本文标题:NDK学习

      本文链接:https://www.haomeiwen.com/subject/emypwctx.html