2. 开发环境准备:JDK/Gradle/NDK等工具安装配置

说实话,SDK集成出问题,十有八九是开发环境没配好。这事听着基础,但坑一点都不少。我这些年帮人排查集成问题,光是“JDK版本不对”、“Gradle下载失败”这类事情,就占了将近一半。

所以咱们先把地基打牢。环境准备这块,我习惯按照“先基础、再构建、后交叉编译”的顺序来。你跟着走一遍,基本不会出岔子。

2.1 JDK:一切的基础

Android开发目前还是Java/Kotlin的天下。JDK是跑这些代码的基础环境。嗯,这里要注意:Android Gradle Plugin 对 JDK 版本有严格限制,不是越新越好。

我个人习惯用 JDK 11。它兼容性最好,从 AGP 4.x 到 8.x 都能用。JDK 17 虽然也行,但部分老项目可能会有兼容性警告。我见过有人装了 JDK 19 去编译 AGP 7.0 的项目,结果 Gradle 直接报错——版本越界了。

安装步骤

  1. 去 Oracle JDK 或 Adoptium (Eclipse Temurin) 下载 JDK 11(LTS 版本,推荐 Temurin,开源免费)。
  2. 安装到不含中文和空格的路径。比如:C:\Java\jdk-11.0.21(Windows)或 /usr/lib/jvm/jdk-11(Linux/Mac)。
  3. 配置 JAVA_HOME 环境变量,指向 JDK 安装目录。
  4. 在 Path 变量里加上 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(Unix)。
  5. 打开终端,输入 java -version 验证。输出显示版本号,说明 OK。
特别提醒:千万不要装一个 JDK 版本,然后在 Android Studio 里配置其他版本。我之前被骗过,系统 JAVA_HOME 是 JDK 8,但 AS 项目配置了 JDK 11,结果 Gradle 编译时用的却是 8,报了一堆“不支持”的错。最好保持统一。

2.2 Gradle:构建系统的核心

Gradle 是 Android 的默认构建工具。说白了,你的代码能不能打包成 APK/AAB,全靠它。

Gradle 有两种模式:Wrapper(推荐) 和 本地安装。我个人强烈建议用 Wrapper。为什么?因为 Wrapper 从 Gradle Distribution URL 自动下载指定版本,团队协作时能保证所有人用同一个版本,避免“在我电脑上能跑”的尴尬情况。

Gradle Wrapper 配置

你新建 Android 项目时,AS 会自动生成 gradle/wrapper/gradle-wrapper.properties。关键配置是这一行:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip

这个 URL 就是 Gradle 的下载源。国内访问 services.gradle.org 经常超时。我最常见的坑就是卡在这。

我的做法:把 URL 换成国内镜像。比如用 腾讯云镜像:
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.4-all.zip
或者 阿里云镜像。这样下载速度快很多,也能避免 SSL 证书问题。

另外,Gradle 版本和 Android Gradle Plugin(AGP)版本有对应关系。版本不匹配,编译必挂。我整理了一个常用对照表:

AGP 版本 最低 Gradle 版本 推荐 Gradle 版本
7.0.x 7.0 7.2
7.1.x 7.0 7.3
7.2.x 7.3 7.4
8.0.x 8.0 8.2
8.1.x 8.0 8.4

2.3 NDK 与 CMake:原生代码的世界

如果你的 SDK 里有 C/C++ 代码(很多第三方 SDK,比如人脸识别、音视频处理,都是原生库),那就必须配 NDK(Native Development Kit)和 CMake。

NDK 管理起来最烦人。Google 每发一个新版本,就可能废弃旧的工具链。我记得有一次升级 NDK 到 r25,结果项目里的 Android.mk 文件直接不认了,CMake 版本也要跟着升级。

我的选择:NDK r23c。这个版本稳定,支持最广泛的 ABI(arm64-v8a、armeabi-v7a、x86_64、x86),而且 CMake 3.22.1 兼容性好。NDK r25 以后开始淘汰旧 ABI,如果你只针对 64 位设备可以试试。

安装与配置

  1. 通过 SDK Manager 安装:在 AS 里 Tools → SDK Manager → SDK Tools,勾选 “NDK (Side by side)” 和 “CMake”。选择你想要的版本。
  2. 本地安装:也可以去官网下载 NDK 压缩包,解压到 local.properties 里指定的路径。比如 ndk.dir=C\:\\Users\\你的名字\\AppData\\Local\\Android\\Sdk\\ndk\\23.1.7779620。
  3. 在 build.gradle 里声明 ndkVersion 和 cmakeVersion。这样项目就锁定了具体版本。
android {
    ndkVersion "23.1.7779620"
    ...
    defaultConfig {
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++17"
                abiFilters "arm64-v8a", "armeabi-v7a"
            }
        }
    }
}
另一个坑:NDK 的 ABI 兼容性。你生成的 .so 文件放在 src/main/jniLibs 目录下,如果是第三方 SDK,只提供了 arm64-v8a,你的 app 也必须在 abiFilters 里只过滤这个,否则运行时找不到 .so 会闪退。切记!

2.4 版本管理工具(选配)

如果你在团队里,或者需要来回切版本(比如维护老项目),我建议用 SDKMAN!(Unix/Mac)或 vfox(全平台)来管理 JDK 和 Gradle 版本。用命令 sdk install java 11.0.21-tem 就能装一个 JDK,不需要手动改环境变量,省心很多。

2.5 整体环境检查清单

配置完这些,我一般会跑一个快速检查脚本。你可以在终端执行以下命令:

java -version          // 确认 JDK 版本
gradle --version       // 确认 Gradle 版本
ndk-build --version    // 确认 NDK 版本
cmake --version        // 确认 CMake 版本

每个命令都输出正确的版本号,基本就稳了。

开发环境准备知识体系与故障排查路径 开发环境准备 JDK 安装配置 Gradle 构建系统 NDK & CMake 环境变量 JAVA_HOME 版本兼容性检查 Wrapper vs 本地安装 Distribution URL 镜像 ABI 兼容性配置 CMake 版本锁定 常见故障源:版本不匹配 / 环境变量未生效 / 镜像下载失败 使用 java -version / gradle --version / ndk-build --version 逐一验证
小结一下:开发环境准备,本质上是“锁定版本”和“避免网络坑”。我个人经验,只要 JDK、Gradle、NDK 三者的版本跟项目 build.gradle 里声明的一致,而且网络镜像配好了,通常不会有什么问题。你后面遇到的集成故障,多半是这里没对齐。