4.1 Android NDK 简介

  原生开发套件(NDK)是一套工具,使您能够在 Android 应用中使用 C/C++ 代码,并提供众多平台库,您可以使用这些平台库管理原生 activity 和访问实体设备组件,例如传感器和触控输入。如果您需要实现以下一个或多个目标,那么 NDK 就能派上用场:

  • 进一步提升设备性能,以降低延迟或运行游戏或物理模拟等计算密集型应用。
  • 重复使用 C/C++ 库。

  可以在 Android Studio 中使用 NDK 将 C/C++ 代码编译到原生库中,然后使用 Android Studio 的集成构建系统 Gradle 将原生库打包到 APK 中。Java 代码随后可以通过 JNI 框架调用原生库中的函数。

  Android Studio 编译原生库的默认构建工具是 CMake。由于很多现有项目都使用 ndk-build 构建工具包,因此 Android Studio 也支持 ndk-build。不过,如果您要创建新的原生库,则应使用 CMake。

1 下载 NDK 和工具

  如需为您的应用编译和调试原生代码,您需要以下组件:

  • Android 原生开发套件 (NDK):这套工具使您能在 Android 应用中使用 C 和 C++ 代码。
  • CMake:一款外部构建工具,可与 Gradle 搭配使用来构建原生库。如果您只计划使用 ndk-build,则不需要此组件。
  • LLDB:Android Studio 用于调试原生代码的调试程序。

  在构建应用时,主要涉及到以下组件:

  • 原生共享库:NDK 从 C/C++ 源代码构建这些库或.so文件。
  • 原生静态库:NDK 也可以构建静态库或.a文件,可以将静态库关联到其它库。
  • Java 原生接口(JNI):JNI 是 Java 和 C++ 组件用于相互通信的接口。
  • 应用二进制接口(ABI):ABI 可以非常精确地定义应用的机器代码在运行时应该如何与系统交互。NDK 根据这些定义构建.so文件。不同的 ABI 对应不同的架构:NDK 为 32 位 ARM、AArch64、x86 及 x86-64 提供 ABI 支持。

2 创建或导入原生项目

  Android Studio 设置完成后,可以直接创建支持 C/C++ 的新项目。但如果您要向现有 Android Studio 项目添加或导入原生代码,则需要按以下基本流程操作:

  1. 创建新的原生源代码文件,并将其添加到 Android Studio 项目中。如果您已经拥有原生代码或想要导入预构建原生库,则可跳过此步骤。
  2. 创建 CMake 构建脚本,指示 CMake 如何将原生源文件构建入库。如果导入和关联预构建库或平台库,您也需要此构建脚本。如果现有的原生库已有 CMakeLists.txt 构建脚本,则可跳过此步骤。
  3. 提供一个指向 CMake 脚本文件的路径,将 Gradle 关联到原生库。Gradle 使用构建脚本将源代码导入您的 Android Studio 项目并将原生库(SO 文件)打包到 APK 中。
  4. 通过点击 Run 图标 从主菜单运行应用 构建并运行应用。Gradle 会以依赖项的形式添加 CMake 或 ndk-build 进程,用于编译和构建原生库并将其随 APK 一起打包。
上一篇:网页web无插件播放器EasyPlayer.js H.265流媒体播放器的decoder.js报Unexpected token ‘<‘错误


下一篇:跟我学C++中级篇——RAII