C/C++ Android NDK 开发——高性能原生代码
什么时候用 NDK
如果你的需求涉及以下场景,考虑用 NDK:
| 场景 | 说明 |
|---|---|
| 游戏引擎 | Unity、Unreal、OpenGL ES 都是 C/C++ 写的 |
| 音视频处理 | 编解码、滤镜、实时处理 |
| 加密/解密 | AES、RSA、签名验证等安全相关 |
| 已有 C/C++ 库移植 | 比如从 PC 或 Linux 移植一个跨平台库 |
| 极性能敏感的代码 | 比如复杂算法、大量数值计算 |
如果只是写普通的 UI 应用、网络请求、数据存储——Java + SDK 完全够用,用 NDK 反而是增加复杂度。
NDK 安装
AIDE 自身不包含 NDK。首次创建 NDK 项目或打开已有 NDK 项目时,AIDE 会提示你下载移动端版本的 NDK。
手动安装入口:Settings → Install Mobile NDK
下载需要 Wi-Fi 环境(移动端 NDK 体积不小)。
两种 NDK 开发模式
模式一:Java + JNI + C/C++(推荐)
┌──────────────┐ JNI ┌──────────────┐
│ Java Activity │ ←─────────→ │ C/C++ 原生层 │
│ (UI + 逻辑) │ │ (高性能计算) │
└──────────────┘ └──────────────┘
Java 层负责 UI 和业务逻辑,C/C++ 层负责计算密集的部分。两者通过 JNI(Java Native Interface)互调。
模式二:纯 Native Activity
整个 Activity 生命周期用 C/C++ 实现,不写任何 Java。适合完全不依赖 Android Java API 的应用(比如 2D 游戏)。
在 AIDE 中创建 NDK 项目
新建项目对话框选以下模板之一:
| 模板 | 说明 |
|---|---|
| Android App / C/Java/Xml | Java 主体 + C/C++ JNI 调用 |
| Android App / C/C++ Native Activity | 纯 C/C++ 原生 Activity |
AIDE 会自动生成 JNI 示例代码、CMakeLists.txt 构建脚本、以及 Java 调用 C 方法的示例。
架构限制
NDK 项目只能在 ARM 设备上编译和运行。
- ✅ ARMv7 / ARM64(几乎所有真实手机和平板)
- ❌ x86 / x86_64(模拟器、极少数 Intel 手机)
在模拟器上想跑 NDK 项目,请用 ARM 系统镜像的模拟器(性能会差一些)。
C/C++ 代码编辑体验
AIDE 对 C/C++ 提供:
- ✅ 基础语法高亮
- ✅ 基础代码补全
- ❌ 较弱的错误检查(比 Java 差)
- ❌ 较弱的重构能力
如果 C/C++ 代码是项目的核心部分,建议在电脑上用 CLion 或 VS Code 写好再带到手机上。AIDE 里主要负责 Java 层和构建运行。