第一章:环境搭建——工欲善其事,必先利其器

做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,方便后续管理
小提示:第一次启动Android Studio时,它会自动下载SDK。如果你网络不好,可以手动下载SDK压缩包,解压后指定路径。我当年在酒店用WiFi下载,断断续续搞了一下午,后来学乖了,都是提前下好。

1.2 NDK与CMake的下载

NDK(Native Development Kit)是写C/C++代码的工具集。CMake是构建工具,负责把C/C++代码编译成.so库。这两个缺一不可。

在SDK Manager里下载:

  1. 打开Android Studio,点击 Tools → SDK Manager
  2. 切换到 SDK Tools 标签页
  3. 勾选 NDK (Side by side) 和 CMake
  4. 点击 Apply 开始下载

为什么要选「Side by side」版本?因为Google从NDK r23开始,推荐使用这种并排安装方式。每个NDK版本独立存放,互不干扰。你可以在项目里指定用哪个版本。

重要:NDK版本不是越新越好。我建议用 r25 或 r26,这两个版本比较稳定,社区支持也好。如果你用最新版 r27,有些第三方库可能还没适配。

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/ 下,这样结构清晰。

避坑指南:我曾经在升级Android Studio后,发现CMake版本不匹配。旧项目用的是3.18,新Studio默认装了3.22。结果编译报了一堆语法错误。解决办法很简单:在build.gradle里显式指定版本,或者统一升级到新版CMake。

1.4 第一个NDK项目创建

环境搭好了,我们来创建一个真正的NDK项目。Android Studio提供了模板,但我不建议直接用——模板里东西太多,新手容易懵。咱们从零开始。

步骤:

  1. 新建一个 Empty Activity 项目
  2. 在 app/src/main/ 下创建 cpp 目录
  3. 在 cpp 目录里创建 CMakeLists.txt 和 native-lib.cpp
  4. 在 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项目跑起来了!

调试技巧:如果编译失败,先检查 CMakeLists.txt 里的文件名和实际文件名是否一致。大小写也要注意,Linux下是区分大小写的。我有个同事把 native-lib.cpp 写成了 Native-lib.cpp,结果找了半天bug。

知识体系总览

下面这张图帮你理清本章的核心逻辑:

NDK环境搭建核心流程 Android Studio NDK + CMake 项目配置 下载安装 配置SDK路径 创建模拟器(可选) SDK Manager下载 选择NDK Side by side 安装CMake 3.22.1 创建项目 编写CMakeLists.txt 配置build.gradle ✅ 第一个NDK项目运行成功

这张图把环境搭建拆成了三个模块:Android Studio是IDE基础,NDK+CMake是编译工具链,项目配置是把它们串起来。每一步都踩实了,后面的开发才会顺。


公众号:蓝海资料掘金营,微信deep3321