本文来自Android NDK官方文档整理而来.

Android NDK是一组使您能将C或C++嵌入到Android应用中的工具,能够在Android应用中使用原生代码实现逻辑操作的一整套工具,它的使用有如下显著特性:

  • 在平台之间移植其应用
  • 重复使用现有库,或者提供其自己的库重复使用
  • 在某些情况下提高性能,特别是像游戏这种计算密集型应用

工作原理

这里主要介绍和了解一些Android NDK需要了解的组件和Android NDK的工作流程.

主要组件

在使用Android NDK开发工具包之前,你可能需要了解下有关NDK中的相关组件概念。

  • 原生共享库(即共享库):NDK从C/C++源代码编译这些库或.so文件(其变现形式为.so文件)
  • 原生静态库(即静态库):NDK也可编译静态库或.a文件,而我们也可将静态库关联到其他库
  • Java原生接口(JNI):JNI是Java与C/C++进行交互通信的一套标准通信接口
  • 应用二级制接口(ABI):ABI 可以非常精确地定义应用的机器代码在运行时应该如何与系统交互。NDK 根据这些定义编译 .so 文件。不同的 ABI 对应不同的架构:NDK 为 32 位 ARM、AArch64、x86 及 x86-64 提供 ABI 支持.
  • 清单:如果您编写的应用不包含 Java 组件,则必须在清单中声明 NativeActivity 类.

工作流程

开发Android原生应用的一般流程如下:

  1. 设计应用,确定要以 Java 实现的部分,以及要以原生代码形式实现的部分(虽然可以完全避免 Java,但您可能发现,Android Java 框架对于控制显示和界面等任务很有用)
  2. 创建Android应用
  3. 如果要编写纯原生应用,请在 AndroidManifest.xml 中声明 NativeActivity 类。
  4. 在“JNI”目录中创建一个描述原生库的 Android.mk 文件,包括名称、标记、关联库和要编译的源文件。
  5. 或者,也可以创建一个配置目标 ABI、工具链、发布/调试模式和 STL 的 Application.mk 文件。对于其中任何您未指明的项,将分别使用以下默认值:
    • ABI:所有非弃用的 ABI
    • 工具链:Clang
    • 模式:发布
    • STL:系统
  6. 原生源代码放在项目的 jni 目录下。
  7. 使用 ndk-build 编译原生(.so、.a)库
  8. 编译 Java 组件,生成可执行 .dex 文件
  9. 将所有内容封装到一个 APK 文件中,包括 .so、.dex 以及应用运行所需的其他文件
anyShare分享到:
打赏一下,鼓励Ta创作更多好内容
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

avatar
1 评论主题
1 在线回复
0
 
最受欢迎评论
热门评论
2 评论者
hfcairaul 最近的评论
  订阅  
最新 最旧 得票最多
提醒
raul
游客

联系下我r79188 微信

普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress