第一章:环境搭建——工欲善其事,必先利其器
做NDK开发,说白了就是让Java代码和C/C++代码能互相调用。但很多人一上来就卡在环境搭建上——Android Studio装好了,NDK也下了,一编译就报错。我见过太多新手被这步劝退了。其实没那么复杂,今天我就带你一步步把环境搭好。
1.1 Android Studio的安装与配置
Android Studio是官方IDE,也是NDK开发的主战场。我个人习惯用最新稳定版,别追beta版,容易踩坑。
下载地址:直接去 developer.android.com/studio 下载。国内用户如果下载慢,可以用腾讯、阿里的镜像站。
安装要点:
- Windows用户记得勾选「Android Virtual Device」——虽然做NDK开发不一定用模拟器,但调试时有个模拟器还是方便
- 安装路径不要有中文,不要有空格。我见过有人装在「D:\程序\Android Studio」里,结果编译时各种路径解析错误
- SDK路径也建议单独设置,比如 D:\Android\Sdk,方便后续管理
1.2 NDK与CMake的下载
NDK(Native Development Kit)是写C/C++代码的工具集。CMake是构建工具,负责把C/C++代码编译成.so库。这两个缺一不可。
在SDK Manager里下载:
- 打开Android Studio,点击 Tools → SDK Manager
- 切换到 SDK Tools 标签页
- 勾选 NDK (Side by side) 和 CMake
- 点击 Apply 开始下载
为什么要选「Side by side」版本?因为Google从NDK r23开始,推荐使用这种并排安装方式。每个NDK版本独立存放,互不干扰。你可以在项目里指定用哪个版本。
1.3 SDK Manager中CMake的配置
CMake下载完后,还需要配置一下。很多人忽略这步,结果编译时提示「CMake not found」。
配置步骤:
- 在 SDK Manager 里确认 CMake 版本已安装(我一般装 3.22.1,够用了)
- 在项目的 build.gradle 里指定 CMake 路径:
android {
...
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
version "3.22.1"
}
}
}
这里要注意:CMakeLists.txt 的路径是相对于项目根目录的。我习惯把它放在 src/main/cpp/ 下,这样结构清晰。
1.4 第一个NDK项目创建
环境搭好了,我们来创建一个真正的NDK项目。Android Studio提供了模板,但我不建议直接用——模板里东西太多,新手容易懵。咱们从零开始。
步骤:
- 新建一个 Empty Activity 项目
- 在 app/src/main/ 下创建 cpp 目录
- 在 cpp 目录里创建 CMakeLists.txt 和 native-lib.cpp
- 在 build.gradle 里配置 externalNativeBuild
CMakeLists.txt 内容:
cmake_minimum_required(VERSION 3.18.1)
project("myndkapp")
add_library(
native-lib
SHARED
native-lib.cpp
)
find_library(
log-lib
log
)
target_link_libraries(
native-lib
${log-lib}
)
native-lib.cpp 内容:
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myndkapp_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
然后在 MainActivity 里加载这个库:
static {
System.loadLibrary("native-lib");
}
public native String stringFromJNI();
运行一下,如果看到 "Hello from C++" 出现在屏幕上,恭喜你,第一个NDK项目跑起来了!
知识体系总览
下面这张图帮你理清本章的核心逻辑:
这张图把环境搭建拆成了三个模块:Android Studio是IDE基础,NDK+CMake是编译工具链,项目配置是把它们串起来。每一步都踩实了,后面的开发才会顺。
公众号:蓝海资料掘金营,微信deep3321