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

android-ndk开发(1): 搭建环境

android-ndk开发(1): 搭建环境

2025/05/05

1. 目的

写一些 C/C++ 代码, 例如 cv 基础算法, 并交叉编译到 android 平台。 不涉及 JNI、 Java、 Kotlin, 暂不涉及 rust。 基本上能适用于华为鸿蒙的 ohos ndk。

那么, 为了完成交叉编译, 以及部署、运行、调试, 需要哪些配置? 本篇提供基础的环境说明:

  • 工具链: android-ndk
  • 设备连接工具: adb
  • 构建工具: cmake 和 ninja

2. android-ndk

2.1 android-ndk 是什么

android 是 linux 吗? 似乎是, 但又不太一样。
类似的, android-ndk 是 clang 吗? 似乎是, 但又不太一样。

总之, android-ndk 可以简单理解为, 是 clang 的魔改版本, 有专门的 team 开发维护的。

还不理解? android-ndk 是交叉编译工具链, 带有不错的 cmake 构建支持。

2.2 下载 android-ndk

官网只提供最新的几个版本: https://developer.android.google.cn/ndk/downloads

老版本从 github 页面查看下载链接: https://github.com/android/ndk/wiki/Unsupported-Downloads

对于 Linux 和 Windows 用户, 下载后解压, 就完成了安装。 对于 macOS, 苹果的签名机制导致比较新版本的 android-ndk 不能直接解压安装, 后续单独开一篇讲讲。

2.3 是否需要 Android Studio:非必须

Android Studio 充当这几个角色:

  • 是官方钦定的 IDE。一般简称为 AS
  • 编译 apk 的话, 对于普通人来说老实用 Android Studio
  • AS 能让用户点点点的方式, 下载 android sdk, android ndk 等

但不用 AS 也可以把 C/C++ 代码交叉编译到 android 平台。 要运行、调试,也可以不用 AS。

3. adb

3.1 adb 是什么

当编译出可执行程序、动态库, 需要把它们放到 android 设备上去执行。 简单的说就是拷贝 PC 上的文件到设备上, 这些文件最重要的就是可执行文件, 也可以是动态库, 甚至是图片、 文本文件等。 adb 充当了 ”拷贝工具“。

要运行程序, 需要连接到设备上, 在启动程序。 adb 充当了 ”通信道路“。

当把设备上程序运行的结果拷贝回到本地,比如日志文件,adb 再次充当了 “拷贝工具” 的角色, 只不过方向是从设备到 PC。

此外, adb 还可以完成 apk 的安装, 模拟屏幕操作等; 对于 cv 库开发者来说, 这些用不到, 就跳过吧。

官方的说明文档很详实: https://developer.android.com/tools/adb?hl=zh-cn

3.2 下载 adb

对于独立下载 android-ndk 的用户(我的主要使用方式), 需要另行下载 platform-tools, 它包含了 adb 等工具:

https://developer.android.google.cn/tools/releases/platform-tools

添加到 PATH 环境变量, 后续经常用到它。

platform-tools 其实是 android-sdk 的一部分, 独立安装了 android-sdk 的用户, 或已经通安装了 Android Studio 且从 AS 里安装了 android-sdk 的话, 找到 <android-sdk>/platform-tools 目录即可找到 adb。

4. 构建工具

4.1 android-ndk 自带了 cmake 支持

➜  ncv git:(main) ✗ tree ~/soft/android-ndk/r21e/build/cmake
/Users/zz/soft/android-ndk/r21e/build/cmake
├── abis.cmake
├── android.toolchain.cmake
├── platforms.cmake
└── system_libs.cmake1 directory, 4 files

为什么 ndk 要自带 cmake 这么一个目录呢? 因为 cmake 官方(曾经)野心勃勃, 想要提供各个平台的交叉编译支持。 当然我们知道 cmake 官方这些姥爷们是没法支持所有平台的, 所以他们说 “对于新平台,您得自己写 xxx.toolchain.cmake "。 小白用户自己写这样的文件, 难免掉坑里。

因此 android-ndk 官方提供了支持; 当然后来 android-ndk 官方也觉得有点维护不动了, 于是和 cmake 官方一起合作了。

对于 android-ndk 的新入坑选手, 只要知道, 自己单独安装一个 cmake 就行了:

https://cmake.org/download/

注意: 选择 binary 而不是 source, source 是源代码的意思。 至于为什么 cmake 官方把源代码放在开头, 因为它是开源软件! 开源软件务必提供源代码, 就这么简单。

4.2 ninja

ninja 比 make 的编译速度快。 ninja 是 make 的替代品。

cmake -G Ninja 这样使用。 没了。

哦,如果还有,你就是 CMAKE_MAKE_PROGRAM=$HOME/soft/ninja 来指定 ninja 可执行文件的路径。

ninja 官方介绍: https://ninja-build.org/

ninja 下载: https://github.com/ninja-build/ninja/releases

5. 写代码用什么?

  1. 代码可以从别人那里 copy, 也可以问 AI 生成

  2. 别的平台的代码怎么写, android-ndk 平台的代码就怎么写

  3. 那就…推荐用 VSCode

6. 总结

给出了一份还算稳妥的 android-ndk 开发环境入门说明。

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

相关文章:

  • 星途-(4)
  • 关于Python:9. 深入理解Python运行机制
  • DeepSeek技术发展详细时间轴与技术核心解析
  • ARM子程序调用与返回
  • vscode运行python的快捷键
  • VirtualBox调整虚拟机内存和CPU
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(八)
  • 智能体四项关键技术:MCP、A2A、ANP与函数调用的深度解析
  • 判断字符是否唯一 --- 位运算
  • 《冰雪三职业》:战士玩法攻略!
  • 精益数据分析(39/126):SaaS与移动应用商业模式的关键要点剖析
  • P6822 [PA 2012 Finals] Tax 题解
  • 【项目】基于ArkTS的网吧会员应用开发(2)
  • Qt天气预报系统更新UI界面
  • ansible基础-优化
  • 代码随想录算法训练营day9:字符串part02
  • 英伟达开源英语自动语音识别模型:nvidia/parakeet-tdt-0.6b-v2
  • android zxing QrCode 库集成转竖屏适配问题
  • 餐具瓷器品牌十大排名
  • Linux安装RTL8215网卡驱动
  • FreeRTOS系统CPU使用率统计
  • AutoGPT
  • GESP2024年3月认证C++八级( 第二部分判断题(6-10))
  • 柯西乘积定理(Cauchy Product Theorem)
  • C# 反射
  • [特殊字符] 大模型(LLMs)RAG 版面分析——文本分块面
  • 农经权二轮延包软件—摸底申请表生成
  • 数据库的并发控制
  • nats v2.11.3全新上线!MQTT支持增强、JetStream性能优化、关键BUG修复,构建高效可信消息中间件新时代
  • NV287NV291美光固态闪存NV293NV294