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 直接报错——版本越界了。
安装步骤
- 去 Oracle JDK 或 Adoptium (Eclipse Temurin) 下载 JDK 11(LTS 版本,推荐 Temurin,开源免费)。
- 安装到不含中文和空格的路径。比如:
C:\Java\jdk-11.0.21(Windows)或/usr/lib/jvm/jdk-11(Linux/Mac)。 - 配置
JAVA_HOME环境变量,指向 JDK 安装目录。 - 在
Path变量里加上%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(Unix)。 - 打开终端,输入
java -version验证。输出显示版本号,说明 OK。
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 经常超时。我最常见的坑就是卡在这。
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 版本也要跟着升级。
安装与配置
- 通过 SDK Manager 安装:在 AS 里 Tools → SDK Manager → SDK Tools,勾选 “NDK (Side by side)” 和 “CMake”。选择你想要的版本。
- 本地安装:也可以去官网下载 NDK 压缩包,解压到
local.properties里指定的路径。比如ndk.dir=C\:\\Users\\你的名字\\AppData\\Local\\Android\\Sdk\\ndk\\23.1.7779620。 - 在
build.gradle里声明ndkVersion和cmakeVersion。这样项目就锁定了具体版本。
android {
ndkVersion "23.1.7779620"
...
defaultConfig {
externalNativeBuild {
cmake {
cppFlags "-std=c++17"
abiFilters "arm64-v8a", "armeabi-v7a"
}
}
}
}
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 版本
每个命令都输出正确的版本号,基本就稳了。
build.gradle 里声明的一致,而且网络镜像配好了,通常不会有什么问题。你后面遇到的集成故障,多半是这里没对齐。