1. 安装 Android NDK
Android NDK Win10安装及环境变量配置(图文详细教程)
2. 创建项目结构
一般在AS你新建C++项目会默认如下结构目录,要是用现有项目,你也可以手动创建。
c
YourProject/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── cpp/
│ │ │ │ ├── your_file.cpp
│ │ │ │ └── CMakeLists.txt
│ │ │ ├── java/
│ │ │ └── res/
│ ├── build.gradle
└── ...
3. 编写 CMakeLists.txt
在 cpp 文件夹中创建一个名为 CMakeLists.txt
的文件,该文件包含编译共享库的指令。
c++
cmake_minimum_required(VERSION 3.18.1)
# 指定要编译的源文件
add_library( # Sets the name of the library.
my_native_lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
your_file.cpp )
# 指定要链接的库
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the log library.
log )
# 指定要链接的库
target_link_libraries( # Specifies the target library.
my_native_lib
# Links the target library to the log library
# included in the NDK.
${log-lib} )
4. 修改 build.gradle
在 app 目录下的 build.gradle
文件中,确保添加 CMake 的支持。
c
android {
...
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
}
}
}
dependencies {
...
}
5. 同步项目
点击 Android Studio 顶部的 Sync Now
按钮,确保你的项目能够识别 CMake
配置。
6. 编译 .so 文件
- 点击菜单 Build -> Make Project 或者 Rebuild Project。
- 编译完成后,
.so
文件会在app/build/intermediates/cmake/
目录下生成。
新建的C++项目默认都有上面代码,无需任何操作。
7. Android.mk 和 CMakeLists.txt
简单介绍下Android.mk
,因为在JNI开发中,看到过它的影子
- 定义:
Android.mk
是Android NDK(Native Development Kit)
中使用的Makefile文件。它定义了如何编译本地代码,生成共享库或可执行文件。 - 构建系统: 依赖于GNU Make,比较传统,适合简单的项目。
结构
c
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_native_lib
LOCAL_SRC_FILES := my_native_lib.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
include $(BUILD_SHARED_LIBRARY)
CMakeLists.txt
- 定义:
CMakeLists.txt
是CMake构建系统的配置文件。CMake是一个跨平台的构建系统生成工具,能够生成本地构建文件(如Makefile或Visual Studio项目文件)。 - 构建系统: 比Make更现代化,提供更多功能,适合大规模和复杂的项目。
总结
特性 | Android.mk | CMakeLists.txt |
---|---|---|
构建系统 | GNU Make | CMake |
复杂度 | 简单,适合小型项目 | 适合大型项目和复杂构建 |
跨平台支持 | 限制 | 良好支持 |
现代特性 | 不支持现代C++特性 | 支持现代C++特性 |
可读性 | 对于复杂项目可读性较差 | 更易读,更容易维护 |
简单概括,就是Android.mk
过时了,一般在老项目中比较常见。