1. Android NDK开发概述
在移动应用开发领域,Java/Kotlin虽然是Android平台的主流语言,但某些场景下我们不得不使用原生代码(C/C++)。比如需要重用现有C++代码库、实现高性能计算模块、处理音视频编解码等场景。Android NDK(Native Development Kit)正是为此而生的工具链,它允许开发者在Android应用中嵌入原生代码。
CMake作为跨平台的构建系统,已经成为Android Studio官方推荐的NDK构建工具。相比传统的ndk-build,CMake具有更清晰的语法结构、更好的跨平台支持以及与IDE更紧密的集成。特别是在需要构建动态库(.so)或静态库(.a)时,CMake能提供更灵活和可维护的配置方式。
2. 环境准备与基础配置
2.1 安装必要组件
在开始之前,确保你的开发环境已经准备就绪:
- 最新版Android Studio(当前稳定版为2023.3.1)
- Android NDK Bundle(通过SDK Manager安装)
- CMake(建议3.22.1或更高版本)
- LLDB(用于原生代码调试)
在Android Studio中,可以通过以下路径安装这些组件:
File > Settings > Appearance & Behavior > System Settings > Android SDK > SDK Tools
勾选:
- NDK (Side by side)
- CMake
- LLDB
注意:建议使用Side by Side NDK,这样可以同时安装多个NDK版本,方便项目兼容性管理。
2.2 创建支持C++的Android项目
在Android Studio中新建项目时,选择"Native C++"模板。这个模板会自动生成基本的CMake配置文件和示例代码。关键生成的文件包括:
- CMakeLists.txt:位于app模块根目录,是CMake的主配置文件
- native-lib.cpp:示例C++源文件
- build.gradle(Module:app):包含CMake配置的Gradle脚本
3. CMake基础语法解析
3.1 基本指令详解
CMakeLists.txt是CMake的构建脚本,理解其基本指令对于NDK开发至关重要:
cmake复制# 设置CMake最低版本要求
cmake_minimum_required(VERSION 3.22.1)
# 定义项目名称
project("myndkproject")
# 创建库文件
add_library( # 设置库名称
native-lib
# 设置库类型
SHARED
# 提供源文件路径
src/main/cpp/native-lib.cpp )
关键指令说明:
cmake_minimum_required:指定CMake的最低版本要求project():定义项目名称和相关属性add_library():添加库文件,可以是SHARED(动态库)或STATIC(静态库)
3.2 变量与常用函数
CMake提供了丰富的变量和函数来简化构建过程:
cmake复制# 设置变量
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall")
# 包含目录
include_directories(${CMAKE_SOURCE
