无需Android Studio:用commandlinetools-win搭建Android SDK指南

发布时间:2026/10/28 17:36:43
无需Android Studio:用commandlinetools-win搭建Android SDK指南

简介:这份资源是面向 Windows 平台的 Android 命令行工具包(commandlinetools-win-8512546_latest.zip),适合不想安装完整 Android Studio、却需要搭建或维护 Android SDK 环境的开发者、自动化构建工程师与 CI 场景使用。它内置 sdkmanager、avdmanager、apkanalyzer、lint、retrace 等命令行入口,可在无图形界面下完成 SDK 包下载、模拟器管理与应用分析,是精简开发环境与服务器端构建的实用选择。压缩包共 100 个文件,以 90 个 jar 为核心运行库,辅以 7 个 bat 批处理脚本、1 个 readme、1 个 properties 与 1 个 txt 说明文件,整体约 108.86MB,解压后即可通过命令行调用。目前已有 1088 人学习下载,适合希望摆脱 IDE 依赖、用脚本管理 Android SDK 的中高级开发者参考使用。

1. 从 commandlinetools-win-8512546_latest.zip 说起:没有 Android Studio 也能搭出 Android SDK

很多人第一次拿到commandlinetools-win-8512546_latest.zip是懵的:一个 100 多 MB 的压缩包,解压出来只有cmdline-tools一个目录,没有图形界面,没有模拟器,连个像样的安装程序都没有。它其实是 Google 官方提供的 Android 命令行工具包,是 Android SDK 的最小化入口。你手里那台 8G 内存的旧笔记本、公司配的开发机、或者一台只跑 CI 的 Windows Server,装不下 Android Studio 那套几个 G 的 IDE,但你又确实需要adb、sdkmanager、avdmanager这些工具去连真机、拉依赖、跑构建,这时候这个 zip 就是最省事的路径。它解决的不是「怎么开发一个 App」的问题,而是「怎么在一台干净 Windows 机器上,用命令行把 Android 构建链路搭起来」的问题。适合谁?适合做 Android 自动化测试、Flutter/React Native 混合开发、CI 流水线搭建,以及那些不想被 IDE 绑架、习惯用vscode android cmdline-tools组合干活的工程师。下面我按自己反复装过十几台机器的流程,把这个 zip 从解压到能跑通adb devices的每一步拆开讲。

2. 解压与目录规划:commandlinetools-win 到底该放哪

2.1 为什么不能直接双击解压到桌面

commandlinetools-win-8512546_latest.zip解压后得到的是cmdline-tools文件夹,里面是bin、lib、source.properties这些内容。如果你把它随手丢在桌面或者Downloads里,后面用sdkmanager安装 platform-tools、build-tools 时,路径里带空格或中文,sdkmanager.bat解析参数就会出问题,典型现象是执行到一半报Warning: Could not create file...或者直接闪退。我一般会固定一个纯英文、无空格的根目录,比如D:\Android,把解压出来的cmdline-tools放进去,然后在它旁边再建两个空目录:platform-tools和build-tools。这样做的目的是让 SDK 的根目录结构清晰,后面ANDROID_HOME指向D:\Android,所有组件都收在同一个父目录下,迁移机器时整个文件夹拷走就能用。

具体操作分三步。第一步,把 zip 解压到临时目录,确认里面是cmdline-tools而不是嵌套的cmdline-tools/cmdline-tools。第二步,在D:\Android下创建cmdline-tools目录,把解压出来的内容整体移进去,最终路径应该是D:\Android\cmdline-tools\bin\sdkmanager.bat。第三步,如果你下载的版本解压后直接就是bin目录,那说明它缺少一层latest目录,需要手动补:在cmdline-tools下新建latest,把bin、lib等全部移进latest,变成D:\Android\cmdline-tools\latest\bin。这一步是很多教程没讲清楚、但sdkmanager能否被正确识别为「最新版命令行工具」的关键。

# 假设 zip 已下载到 D:\Downloads mkdir D:\Android cd D:\Android # 用 PowerShell 解压(Windows 10+ 自带) Expand-Archive -Path D:\Downloads\commandlinetools-win-8512546_latest.zip -DestinationPath D:\Android\tmp # 查看解压结构 dir D:\Android\tmp # 如果看到 cmdline-tools 目录,整体移动 move D:\Android\tmp\cmdline-tools D:\Android\cmdline-tools # 检查最终路径 dir D:\Android\cmdline-tools\latest\bin\sdkmanager.bat

上面命令里Expand-Archive是 PowerShell 的解压命令,-DestinationPath指定临时目录,避免直接污染D:\Android。move之后要确认sdkmanager.bat的完整路径,如果路径是D:\Android\cmdline-tools\bin\sdkmanager.bat而没有latest这一层,就按前面说的手动补目录。参数上唯一要注意的是目录名不要用中文和空格,ANDROID_HOME后续会指向D:\Android,这个变量会被 Gradle、Flutter、Node 的 Android 构建脚本读取,路径不干净会引发一连串玄学报错。

2.2 环境变量怎么配才不翻车

目录放好之后,必须配三个环境变量:ANDROID_HOME、ANDROID_SDK_ROOT、PATH。ANDROID_HOME和ANDROID_SDK_ROOT现在官方建议都指向 SDK 根目录,也就是D:\Android,老版本工具可能只认其中一个,两个都设上最稳。PATH里要追加两个路径:%ANDROID_HOME%\cmdline-tools\latest\bin和%ANDROID_HOME%\platform-tools。前者让你在任何目录下能敲sdkmanager,后者让你能敲adb。配完之后一定要开一个新的 cmd 或 PowerShell 窗口验证,因为环境变量只对新进程生效,旧窗口里敲adb还是会提示「不是内部或外部命令」。

# 在 PowerShell 里临时验证(不写注册表,只对当前会话生效) $env:ANDROID_HOME = "D:\Android" $env:ANDROID_SDK_ROOT = "D:\Android" $env:Path += ";D:\Android\cmdline-tools\latest\bin;D:\Android\platform-tools" # 验证 sdkmanager 能否被找到 sdkmanager --version # 如果输出版本号(如 8.0),说明路径正确

这段脚本适合快速验证,确认没问题后再去「系统属性 → 高级 → 环境变量」里永久写入。sdkmanager --version能输出版本号,说明cmdline-tools的bin目录已经进入PATH,且 Java 环境也能被找到——sdkmanager本身是 Java 程序,需要 JDK 8 或 11 以上。如果这一步报JAVA_HOME相关错误,先去装一个 JDK,把JAVA_HOME指向 JDK 根目录,再把%JAVA_HOME%\bin加进PATH。这是commandlinetools-win在 Windows 上第一个高频翻车点,不是 zip 本身的问题,而是 Java 环境没就位。

3. 用 sdkmanager 拉齐 platform-tools 与 build-tools

3.1 先看清 sdkmanager 能装什么

sdkmanager是commandlinetools-win里最核心的命令,它负责从 Google 的仓库下载 SDK 组件。刚解压完的cmdline-tools是空的,里面没有adb,没有aapt2,什么都没有。你需要用sdkmanager --list先看一遍可用包,再决定装哪些。这个命令会输出已安装和可安装的列表,内容很长,建议重定向到文件里慢慢看。列表里platform-tools提供adb和fastboot,build-tools提供aapt2、d8、zipalign,platforms;android-34提供对应 API 级别的android.jar。做 Android 自动化或混合开发,最少要装这三类。如果你还要跑模拟器,再装emulator和对应的system-images。

# 列出所有可用包,输出到文件方便查看 sdkmanager --list > D:\Android\sdk-list.txt # 只看已安装的 sdkmanager --list_installed # 安装 platform-tools(含 adb) sdkmanager "platform-tools" # 安装 build-tools 34.0.0 sdkmanager "build-tools;34.0.0" # 安装 Android 14 平台 sdkmanager "platforms;android-34"

sdkmanager --list的输出里,包名是分号分隔的,比如build-tools;34.0.0,安装时必须带引号,否则分号在 cmd 里会被当成命令分隔符。--list_installed用来确认装没装成功。安装过程中会提示接受许可协议,输入y回车即可。如果网络环境导致下载慢或中断,可以加--channel=0走稳定通道,或者配置代理参数——但这里不展开网络层面的东西,只提醒一句:下载失败时先看报错里的 URL,确认是仓库地址不通还是磁盘权限问题。装完之后D:\Android\platform-tools\adb.exe应该存在,D:\Android\build-tools\34.0.0\aapt2.exe也应该存在。

3.2 版本选择与参数说明

build-tools的版本不是越新越好,要和你的项目compileSdk匹配。常见做法是装一个较新的稳定版,比如 34.0.0 或 33.0.2,然后在项目里显式指定。platforms的 API 级别同理,android-34对应 Android 14。如果你维护多个项目,可以同时装多个版本,sdkmanager支持并存。参数上,sdkmanager还支持--sdk_root指定 SDK 根目录,如果你没有配ANDROID_HOME,可以用这个参数临时指定。另外--verbose能看到更详细的下载日志,排查下载卡住时有用。

组件包名示例作用是否必装
platform-toolsplatform-toolsadb、fastboot是
build-toolsbuild-tools;34.0.0aapt2、d8、zipalign是
platformsplatforms;android-34android.jar是
emulatoremulator模拟器引擎按需
system-imagessystem-images;android-34;google_apis;x86_64模拟器镜像按需

这张表里前三行是任何 Android 构建链路都绕不开的。emulator和system-images只有你需要在本机跑虚拟设备时才装,否则可以跳过,省下几个 G 的磁盘。装system-images时注意架构选x86_64,Windows 上跑arm64镜像性能很差。sdkmanager安装完成后不会自动把platform-tools加进PATH,所以前面配环境变量那一步必须做,否则adb还是敲不出来。

4. 避坑与排查:commandlinetools-win 最常见的 5 个翻车现场

4.1 sdkmanager 报 “Could not determine SDK root”

现象:执行sdkmanager --list时直接报错,提示无法确定 SDK 根目录,或者提示cmdline-tools组件缺失。原因:cmdline-tools的目录结构不对,缺少latest这一层,或者ANDROID_HOME指向了cmdline-tools而不是它的父目录。解决:确认路径是D:\Android\cmdline-tools\latest\bin\sdkmanager.bat,ANDROID_HOME设为D:\Android。如果结构不对,手动建latest目录并把bin、lib移进去。

4.2 adb 能识别设备但显示 unauthorized

现象:adb devices列出设备但状态是unauthorized,无法安装 APK 或执行 shell。原因:手机端没有授权这台电脑的 RSA 密钥,或者之前授权过但密钥变了。解决:在手机开发者选项里撤销 USB 调试授权,拔插数据线,重新弹窗时勾选「始终允许」。如果还不弹窗,检查数据线是否只支持充电,换一根支持数据传输的线。Windows 上还可能需要装厂商 USB 驱动,commandlinetools-win本身不带驱动。

4.3 sdkmanager 下载到一半卡住或报 SSL 错误

现象:安装platform-tools或build-tools时进度条长时间不动,最后报SSLException或Connection reset。原因:网络到 Google 仓库的链路不稳定,或者本机时间不准导致证书校验失败。解决:先校准系统时间,再重试;如果仍失败,检查是否有安全软件拦截了sdkmanager的 Java 进程。常见做法是换一个网络时段重试,或者用--verbose看具体卡在哪个 URL。注意不要用来源不明的镜像包替换官方组件,版本对不上会导致构建产物异常。

4.4 环境变量配了但新窗口仍找不到 adb

现象:明明在系统属性里加了PATH,新开的 cmd 里敲adb还是提示不是内部命令。原因:PATH里写的是%ANDROID_HOME%\platform-tools,但ANDROID_HOME本身没生效,或者路径拼写有误。解决:在 cmd 里执行echo %ANDROID_HOME%和echo %PATH%,确认变量展开后的实际值。如果ANDROID_HOME为空,说明变量名拼错或没保存。另一个常见原因是把路径加到了「用户变量」但当前用的是管理员账户,用户变量不互通,建议加到「系统变量」。

4.5 build-tools 版本与 Gradle 插件不匹配

现象:命令行构建时报AAPT2 aapt2-...-windows.jar相关错误,或者提示Failed to find Build Tools revision。原因:项目build.gradle里指定的buildToolsVersion和你实际安装的版本不一致。解决:用sdkmanager --list_installed看已装版本,然后在项目里改成一致,或者补装对应版本。Gradle 插件版本和build-tools有兼容矩阵,不要盲目追新。如果项目里没写buildToolsVersion,Gradle 会按插件默认值去找,缺哪个就装哪个。

5. 进阶:把 commandlinetools 接进 CI 与多版本共存

5.1 在 CI 里用命令行工具做无头构建

commandlinetools-win-8512546_latest.zip最大的价值其实在 CI 场景。GitHub Actions 的windows-latest镜像里预装了 Android SDK,但版本可能和你本地不一致;自建 Jenkins 或 GitLab Runner 的 Windows 节点上,用这个 zip 可以快速拉起一套干净的 SDK。典型做法是在流水线第一步解压 zip、配环境变量、用sdkmanager装指定版本组件,然后跑gradlew assembleDebug。这样每次构建的 SDK 版本都是确定的,不会因为节点上残留的旧版本导致「本地能过、CI 挂掉」的玄学问题。

# CI 脚本片段:无头安装 SDK 并构建 set ANDROID_HOME=D:\ci\android-sdk set PATH=%ANDROID_HOME%\cmdline-tools\latest\bin;%ANDROID_HOME%\platform-tools;%PATH% call sdkmanager "platform-tools" "build-tools;34.0.0" "platforms;android-34" --sdk_root=%ANDROID_HOME% call gradlew.bat assembleDebug --no-daemon

这段脚本里--sdk_root显式指定根目录,避免依赖全局环境变量。--no-daemon让 Gradle 跑完就退出,适合 CI 容器。注意sdkmanager在 Windows 批处理里要用call调用,否则执行完第一个命令后脚本会提前结束。如果你在 CI 里同时维护多个 Android 版本,可以准备多个 SDK 根目录,用变量切换,而不是在一个目录里反复覆盖安装。

5.2 多版本共存与磁盘清理

一台机器上同时装build-tools;33.0.2和build-tools;34.0.0是允许的,sdkmanager会分别放在build-tools\33.0.2和build-tools\34.0.0。platforms同理。真正占磁盘的是system-images和emulator,一个 x86_64 镜像动辄 1G 以上。如果只是做命令行构建,完全可以不装模拟器相关组件。清理时不要直接删cmdline-tools目录,那是入口;要删就删build-tools下不需要的版本和system-images下不用的镜像。sdkmanager --uninstall "build-tools;33.0.2"可以干净卸载,比手动删目录更安全,因为它会同步更新元数据。

我自己的习惯是:每台新机器先解压commandlinetools-win-8512546_latest.zip,固定放D:\Android,配好三个环境变量,然后只装platform-tools、一个build-tools、一个platforms,跑通adb devices和一次gradlew assembleDebug就算验收。剩下的组件等真正需要时再补,不提前囤。这套流程帮我省过很多次「装了一堆用不上的东西、最后环境冲突」的后悔药。希望帮到你。

本文还有配套的精品资源,点击获取