
简介这份资源是面向 Windows 平台的 Android 命令行工具包适合不想安装完整 Android Studio、却需要搭建 Android 开发或自动化构建环境的开发者也适用于 CI 服务器、脚本化打包等轻量场景。压缩包共 104 个文件以 93 个 jar 核心库为主辅以 8 个 bat 批处理脚本、1 个 properties 配置、1 个 txt 及 readme 说明整体约 141.91MB解压后即可通过 sdkmanager 等脚本按需下载其他 SDK 组件。内容涵盖 apkanalyzer、avdmanager、lint、retrace、screenshot2 等常用命令行入口以及 kotlin-compiler、intellij-core 等底层依赖便于完成 APK 分析、模拟器管理、代码检查与混淆还原等任务。目前已有 341 人学习下载适合希望摆脱图形界面、以命令行方式掌控 Android 工具链的初中级开发者参考使用。1. 从 commandlinetools-win-10406996-latest.zip 说起不装 Android Studio 也能搭出完整安卓工具链很多人第一次配安卓开发环境默认路径就是下载几个 G 的 Android Studio装完发现真正天天用的其实只有adb、sdkmanager、avdmanager这几个命令行工具。如果你只是想跑自动化脚本、做 CI 构建、刷机调试或者在一台内存吃紧的 Windows 机器上搭环境那commandlinetools-win-10406996-latest.zip才是更轻的选择。它本质上是 Android SDK 的命令行工具包解压后得到cmdline-tools目录里面包含sdkmanager、avdmanager、adb、fastboot等核心可执行文件。这份资源解决的就是「不装 IDE、纯命令行管理 SDK 与设备」的问题适合做持续集成、批量设备调试、以及想搞清楚 SDK 目录结构的人。下面按「它是什么 → 怎么落地 → 坑在哪」的顺序拆开讲。2. 解压、目录结构与环境变量把 zip 变成可用的命令行工具2.1 先看清 zip 里到底装了什么拿到commandlinetools-win-10406996-latest.zip后别急着双击解压到桌面。这个包的结构和普通绿色软件不一样它内部只有一层cmdline-tools目录而sdkmanager对目录层级有硬性要求。先看解压后的典型结构cmdline-tools/ ├── bin/ │ ├── sdkmanager.bat │ ├── avdmanager.bat │ ├── adb.exe │ ├── fastboot.exe │ └── ... ├── lib/ │ ├── sdkmanager-classpath.jar │ └── ... └── source.propertiesbin下是 Windows 批处理入口lib下是 Java 依赖source.properties记录版本号。注意adb.exe和fastboot.exe也在这个包里意味着你不需要单独去下 platform-tools 就能先跑起来设备连接。但sdkmanager真正管理的 SDK 组件platforms、build-tools、system-images默认不会放在这个目录里需要你指定一个独立的 SDK 根目录。2.2 目录层级必须摆对否则 sdkmanager 直接报错这是最容易翻车的一步。sdkmanager要求自己所在的路径必须是SDK_ROOT/cmdline-tools/version/bin这种形式其中version可以是latest也可以是具体版本号。如果你直接把 zip 解压出来的cmdline-tools丢到D:\android-sdk下变成D:\android-sdk\cmdline-tools\bin运行时会提示找不到 SDK 根目录。正确做法是手动补一层版本目录。假设你规划 SDK 根目录为D:\android-sdk操作如下# 创建 SDK 根目录 mkdir D:\android-sdk # 把解压出来的 cmdline-tools 移动进去并重命名为 latest # 假设你解压到了 D:\download\cmdline-tools move D:\download\cmdline-tools D:\android-sdk\cmdline-tools\latest执行完后目录应该是D:\android-sdk\cmdline-tools\latest\bin\sdkmanager.bat。这个latest目录名不是随便起的sdkmanager会把它当作「最新版命令行工具」来识别。如果你同时想保留多个版本可以再建D:\android-sdk\cmdline-tools\10.0这样的目录但日常用latest就够了。2.3 环境变量怎么配才不互相打架配环境变量时很多人会把cmdline-tools\latest\bin和platform-tools两个路径都塞进PATH结果adb出现两个版本调着调着就玄学了。我的习惯是只把cmdline-tools\latest\bin加进PATH因为adb本身就在这个 bin 里等后面用sdkmanager装了platform-tools后再把D:\android-sdk\platform-tools加进去并且放在cmdline-tools路径之前让系统优先用独立 platform-tools 里的adb。具体步骤# 1. 新建系统变量 ANDROID_HOME值为 SDK 根目录 setx ANDROID_HOME D:\android-sdk # 2. 把 cmdline-tools 的 bin 加入 PATH setx PATH %PATH%;%ANDROID_HOME%\cmdline-tools\latest\bin # 3. 验证 sdkmanager 能否运行 sdkmanager --versionANDROID_HOME这个变量不是sdkmanager强制的但 Gradle、Flutter、React Native 等工具都会读它提前设好能省掉后面一堆「找不到 SDK」的报错。setx写入的是用户级或系统级持久变量当前 cmd 窗口不会立即生效需要新开一个终端再验证。提示如果你之前装过 Android Studio系统里可能已经有ANDROID_HOME或ANDROID_SDK_ROOT指向旧目录先echo %ANDROID_HOME%确认一下避免两个 SDK 根目录混用。2.4 用 sdkmanager 装第一批组件环境变量配好后先看sdkmanager --list能不能列出远程包。第一次运行会下载仓库元数据网络不通时会卡住或报Warning: Failed to read or create install properties file。能列出列表后按需安装# 安装 platform-tools独立 adb/fastboot sdkmanager platform-tools # 安装一个 Android 平台这里以 API 34 为例 sdkmanager platforms;android-34 # 安装对应 build-tools sdkmanager build-tools;34.0.0 # 安装模拟器系统镜像可选体积较大 sdkmanager system-images;android-34;google_apis;x86_64包名里的分号是sdkmanager的层级分隔符不能写成斜杠或点号。platform-tools装完后会出现在D:\android-sdk\platform-tools这时再把该路径加入PATH。build-tools的版本号要和你的 Gradle 插件匹配不是越新越好后面避坑章节会展开。3. 用 avdmanager 创建模拟器并跑通第一个 adb 连接3.1 创建 AVD 前先确认 system-image 已就位avdmanager创建虚拟设备时依赖system-images目录下的镜像。如果你跳过上一步直接avdmanager create avd会报Package system-images;android-34;google_apis;x86_64 is not installed。所以顺序必须是先sdkmanager装镜像再avdmanager建 AVD。查看已安装镜像sdkmanager --list_installed输出里能看到system-images;android-34;google_apis;x86_64才算就绪。如果只看到platforms和build-tools说明镜像没装成功回到上一步补装。3.2 一条命令建出可启动的 AVD# 创建名为 testApi34 的虚拟设备 avdmanager create avd -n testApi34 -k system-images;android-34;google_apis;x86_64 -d pixel_5参数说明-n是 AVD 名称后续启动模拟器要用-k是镜像包名必须和sdkmanager装的一致-d指定设备模板pixel_5是内置模板之一不写会默认用一个通用模板。执行过程中会问你是否创建自定义硬件配置直接回车用默认即可。创建完成后AVD 配置文件落在C:\Users\用户名\.android\avd\下。可以用avdmanager list avd确认avdmanager list avd3.3 启动模拟器并验证 adb 连接命令行启动模拟器需要emulator.exe它不在cmdline-tools里而在emulator包中sdkmanager emulator装完后emulator.exe位于D:\android-sdk\emulator。启动# 启动指定 AVD D:\android-sdk\emulator\emulator.exe -avd testApi34模拟器起来后另开一个终端adb devices正常应输出emulator-5554 device。如果显示offline通常是模拟器还没完全启动完等十几秒再试如果列表为空检查adb用的是哪个路径的版本where adb看一下是不是cmdline-tools里那个旧版和platform-tools里的新版冲突了。3.4 真机调试时 adb 驱动与授权真机连 Windows 时adb devices显示unauthorized是血泪经验里最常见的一条。原因有两个手机端没弹「允许 USB 调试」授权框或者 Windows 缺对应厂商的 USB 驱动。先在手机开发者选项里撤销 USB 调试授权重新插拔看是否弹框如果弹框都不出现去设备管理器看有没有带感叹号的未知设备装厂商驱动。授权成功后adb devices会显示device此时才能adb install、adb shell。4. 避坑与排查commandlinetools 在 Windows 上的五类常见翻车4.1 sdkmanager 报 “Could not determine SDK root”现象运行sdkmanager --list直接抛Could not determine SDK root或Warning: Could not create settings。原因cmdline-tools的目录层级不对缺少latest这一层或者ANDROID_HOME指向了cmdline-tools本身而不是 SDK 根目录。解决确认路径是SDK_ROOT\cmdline-tools\latest\binANDROID_HOME指向SDK_ROOT。改完新开终端再试。4.2 解压后 adb 能用但 sdkmanager 闪退现象adb version正常sdkmanager双击或命令行运行一闪而过。原因sdkmanager.bat依赖 Java 运行环境系统里没有JAVA_HOME或 Java 版本过低低于 17 容易出问题。解决装一个 JDK 17 或更高版本设好JAVA_HOME并把%JAVA_HOME%\bin加入PATH。验证java -version能输出版本号后再跑sdkmanager。4.3 安装 build-tools 后 Gradle 仍报找不到现象sdkmanager显示build-tools;34.0.0已安装但 Gradle 构建时报Failed to find Build Tools revision 33.0.2。原因项目里build.gradle指定的 build-tools 版本和你装的版本不一致sdkmanager不会自动帮你装项目需要的版本。解决要么改项目里的buildToolsVersion要么用sdkmanager build-tools;33.0.2补装对应版本。用sdkmanager --list_installed核对实际装了什么。4.4 PATH 里多个 adb 导致设备列表时有时无现象adb devices一会儿能列出设备一会儿为空或者adb kill-server后连不上。原因cmdline-tools\latest\bin和platform-tools各有一个adb.exePATH顺序变化时调用了不同版本两个 server 端口冲突。解决where adb确认实际调用路径只保留一个adb在PATH最前面。通常保留platform-tools里的新版把cmdline-tools的 bin 从PATH里去掉只留sdkmanager、avdmanager用绝对路径或单独目录。4.5 模拟器启动报 HAXM 或 Hyper-V 冲突现象emulator -avd testApi34启动失败提示HAXM is not installed或Hyper-V is enabled。原因Windows 上模拟器加速依赖 HAXM 或 Windows Hypervisor Platform和 Hyper-V、WSL2、Docker Desktop 的虚拟化层冲突。解决在「启用或关闭 Windows 功能」里勾选「Windows 虚拟机监控程序平台」让模拟器走 WHPX 而不是 HAXM或者关掉 Hyper-V 改用 HAXM。两者选一别同时开。5. 进阶技巧用 sdkmanager 做可复现的 SDK 清单与批量安装5.1 把已装组件导出成可复现清单团队协作或换机器时最怕「我这能跑你那报错」。sdkmanager支持把当前已安装组件导出配合脚本批量还原# 导出已安装包名列表 sdkmanager --list_installed | findstr /R ^ sdk-packages.txtfindstr过滤出以两个空格开头的行这些就是包名。拿到sdk-packages.txt后在另一台机器上批量安装# 逐行读取并安装 for /f tokens1 %i in (sdk-packages.txt) do sdkmanager %i注意sdkmanager的包名里带分号在 bat 脚本里分号不是特殊字符可以直接传。如果包名后面带了|和版本号需要先截断建议用 PowerShell 处理更稳Get-Content sdk-packages.txt | ForEach-Object { $pkg ($_ -split \|)[0].Trim() if ($pkg) { sdkmanager $pkg } }5.2 用 --sdk_root 显式指定根目录避免多 SDK 混乱当机器上存在多个 SDK 根目录时sdkmanager默认会去猜猜错就装到别处。显式加--sdk_root最稳sdkmanager --sdk_rootD:\android-sdk platform-tools这个参数在 CI 脚本里尤其重要因为 CI 环境可能同时存在多个缓存目录。把--sdk_root写死能保证每次安装位置一致缓存命中率也稳定。5.3 验证安装是否真的可用装完不代表能用。我一般会走一遍最小验证# 1. 确认 sdkmanager 能列出已装组件 sdkmanager --list_installed # 2. 确认 adb 版本和路径 where adb adb version # 3. 确认 build-tools 里有 aapt2 dir D:\android-sdk\build-tools\34.0.0\aapt2.exe # 4. 确认 platforms 里有 android.jar dir D:\android-sdk\platforms\android-34\android.jar四步都过基本可以判定这套命令行工具链是完整的。哪一步缺文件就回到sdkmanager补装对应包。5.4 一个具体技巧用 avdmanager 无交互建 AVDavdmanager create avd默认会问「Do you wish to create a custom hardware profile」在脚本里会卡住。加--force和管道输入no可以跳过echo no | avdmanager create avd -n ciApi34 -k system-images;android-34;google_apis;x86_64 -d pixel_5 --force--force表示同名 AVD 已存在时覆盖重建CI 里每次跑都干净。echo no把交互问题回答掉避免脚本挂起。这个组合我在多个构建流水线里用过比手动点确认可靠得多。从那以后我每次拿到新的commandlinetools包都强制先跑一遍sdkmanager --list_installed和where adb确认目录层级和 PATH 没有打架再往下装组件。这套习惯帮我省掉了大量「明明装了却找不到」的排查时间。希望帮到你。本文还有配套的精品资源点击获取