一、环境变量与 SDK 路径配置
Windows 上安装 Android Studio 之后,很多图形界面操作会被自动处理,但只要你需要命令行执行 gradlew、adb 或者自己搭 CI 环境,环境变量就是绕不开的第一关。配置错误最常见的表现为:输入 adb 提示不是内部或外部命令,或者 Android Studio 里能构建,命令行却报找不到 SDK。

JAVA_HOME 建议直接指定 JDK 17 的安装目录,例如 C:\Program Files\Java\jdk-17。这个路径包含空格,写入系统环境变量时本身没有问题,但在批处理脚本里引用它时一定要用双引号包起来。比如写成 "%JAVA_HOME%\bin\java.exe",如果省略引号,命令解释器会从 C:\Program 处截断,报出 C:\Program 不是内部或外部命令。
ANDROID_HOME 应指向 SDK 根目录,常见位置是 C:\Android\Sdk 或 C:\Users\你的用户名\AppData\Local\Android\Sdk。不要把它指向 platform-tools 子目录,也不要在 Path 中添加旧版 tools 目录。新版 SDK 中 tools 已经拆分,添加后可能让 emulator 命令指向错误版本。修改环境变量后,必须重新打开命令行窗口,已打开的 cmd 或 PowerShell 不会自动刷新环境变量。
set JAVA_HOME=C:\Program Files\Java\jdk-17 set ANDROID_HOME=C:\Android\Sdk set PATH=%JAVA_HOME%\bin;%ANDROID_HOME%\platform-tools;%PATH%
上面是临时会话的写法,永久配置需要进入系统属性,找到高级选项卡,点击环境变量,在系统变量中分别新建或编辑 JAVA_HOME、ANDROID_HOME,并把 Path 中的对应条目追加进去。保存后用 java -version 和 adb version 验证,两个命令都能输出版本信息,第一条坑才算迈过去。
二、模拟器启动失败与虚拟化加速
Android 模拟器对硬件虚拟化的依赖远高于普通应用。Windows 上如果 BIOS 里没有开启 Intel VT-x 或 AMD SVM,模拟器会直接报错或者卡在启动画面。即使 BIOS 已开启,Windows 自身的 Hyper-V、虚拟机平台等特性也会影响加速后端的可用性。先用模拟器自带命令检测:
C:\Android\Sdk\emulator\emulator.exe -accel-check
输出中如果包含 is installed and usable 之类的提示,说明加速后端工作正常。若提示 hypervisor not installed,需要先确认 BIOS 虚拟化已经打开。以 Intel 平台为例,重启进入 BIOS 后,在高级 CPU 配置中找 Intel Virtualization Technology,设为 Enabled;AMD 平台对应 SVM Mode。
Windows 10 和 Windows 11 用户如果平时会用到 Docker Desktop 或 WSL2,Hyper-V 往往已经处于开启状态。此时不建议为了装老式 Intel HAXM 而关闭 Hyper-V,更好的做法是启用 Windows Hypervisor Platform,并在 AVD 创建时选择支持 WHPX 的镜像。若你已经关闭 Hyper-V,也可以安装 Android SDK 附带的 AEHD 驱动,二者只能选其一,混用会导致蓝屏或模拟器无法启动。
systeminfo | findstr /I "Hyper-V"
这条命令可以查看当前系统的 Hyper-V 相关检测信息,但最终是否能加速,还是要以 emulator -accel-check 的结果为准。修改 Hyper-V 或虚拟化平台的 Windows 功能后,记得重启电脑。模拟器卡在 Waiting for target device 时,九成原因都能归结到加速没生效。
三、Gradle 构建中的网络与路径长度问题
第一次构建 Android 项目,Gradle 需要下载 Gradle 发行包和大量依赖。默认下载源在境外,网络波动轻则降低速度,重则一直卡在 Download gradle-8.10.2-bin.zip。可以优先修改项目根目录下 gradle\wrapper\gradle-wrapper.properties 文件中的 distributionUrl,把下载源换成国内镜像。注意该文件使用 Java properties 格式,URL 里的冒号需要用反斜杠转义。
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.10.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
依赖仓库的镜像同样重要。可以在项目根目录的 build.gradle 中将 mavenCentral 替换为国内镜像仓库,也可以在全局的 C:\Users\你的用户名\.gradle\init.gradle 中统一配置,避免每个项目重复修改。修改后重新同步,下载依赖的耗时通常会明显下降。
Windows 的路径长度限制也是 Gradle 构建失败的隐藏原因之一。默认缓存目录 C:\Users\你的用户名\.gradle\caches 下面嵌套层级非常深,一旦超过旧版 260 字符限制,就会报 Could not create parent directory 或文件名太长。可以新建一个短路径目录 C:\Android\.gradle,然后在全局 gradle.properties 中设置:
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 org.gradle.user.home=C\:\\Android\\.gradle
这里特别要注意反斜杠的写法。Java properties 会把单个反斜杠视为转义起始符,所以路径 C:\Android\.gradle 需要写成 C\:\\Android\\.gradle,也就是每个反斜杠前再加一个反斜杠。如果你是通过系统环境变量 GRADLE_USER_HOME 配置,则直接写 C:\Android\.gradle,不需要额外转义。
四、真机调试与 ADB 连接问题
真机调试的第一步是手机开启开发者选项和 USB 调试,不同品牌路径略有差异,但基本都在设置中的版本号连点七次之后出现。插上数据线后,Windows 设备管理器里需要看到 Android Composite ADB Interface 或类似名称,如果出现黄色感叹号,说明驱动没有正确安装。此时可以到 Android Studio 的 SDK Manager 中下载 Google USB Driver,然后手动更新驱动。
adb kill-server adb start-server adb devices
adb devices 输出设备序列号并显示 device 即为正常;如果显示 unauthorized,说明手机端尚未确认调试授权,解锁手机并勾选始终允许。如果列表为空,先检查数据线是否为纯充电线,很多劣质线材不支持数据传输,然后换 USB 口再试。驱动和授权都正常却依然读不到,很可能是 adb 端口被占用。
adb 默认监听 5037 端口,某些安卓助手、虚拟大师或旧版工具会先占用该端口。先找出占用进程:
netstat -ano | findstr 5037 taskkill /PID 1234 /F
上面第二条命令中的 1234 需要替换成第一条结果里的实际 PID。如果不确定 PID 对应什么进程,不要贸然结束系统关键进程。还有一类常见问题是系统里存在多个 adb.exe,通过 where adb 可以列出所有路径,只保留 C:\Android\Sdk\platform-tools\adb.exe,并确保它出现在 Path 变量靠前的位置,否则命令行调用的可能还是第三方工具自带的旧版程序。

