不装Android Studio,用commandlinetools在Windows搭建可复现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 人学习下载,读者可借此掌握 sdkmanager 的包管理流程、命令行工具链的目录组织方式,并快速搭建可复用的 Android 构建环境。
1. 从 commandlinetools-win-8512546_latest.zip 说起:没有 Android Studio 的机器怎么搭出可用 SDK
如果你在一台 Windows 机器上只需要 Android SDK,而不想装几个 G 的 Android Studio,那commandlinetools-win-8512546_latest.zip就是绕不开的起点。这个包是 Google 官方命令行工具集,解压后只有bin、lib等目录,核心是sdkmanager.bat、avdmanager.bat、adb.exe这几个可执行文件。它解决的是「无 GUI 环境下管理 SDK 组件」的问题,适合 CI 构建机、低配笔记本、只跑 adb 和 fastboot 的嵌入式调试场景,以及想用 vscode android cmdline-tools 做轻量开发的从业者。8512546 是这一版构建号,zip 解压后目录名默认是cmdline-tools,这个命名会直接影响后续 sdkmanager 能否找到自己,后面会专门讲。整篇内容围绕「拿到 zip 之后怎么把它变成一套能编译、能连设备、能长期维护的 SDK」展开,不涉及 Android Studio 图形界面。
2. 解压、目录布局与 sdkmanager 首次跑通:路径错了后面全白搭
2.1 为什么不能直接双击 sdkmanager.bat
很多人拿到 zip 解压到D:\cmdline-tools,进去双击bin\sdkmanager.bat,窗口一闪就没了。原因是 sdkmanager 启动时会用相对路径去..\lib找自己的 jar 包,同时它期望自己位于<SDK_ROOT>\cmdline-tools\<version>\bin这种结构里。如果你把cmdline-tools直接放在盘符根目录,它会把D:\当成 SDK 根,然后去D:\cmdline-tools\lib找,路径对不上就崩。常见做法是手动构造两级目录,让cmdline-tools下面再套一层latest,这样 SDK 根目录就是它的上一级。
# 假设解压得到 D:\cmdline-tools,先建好目标结构 mkdir D:\Android\Sdk\cmdline-tools move D:\cmdline-tools D:\Android\Sdk\cmdline-tools\latest # 最终结构:D:\Android\Sdk\cmdline-tools\latest\bin\sdkmanager.bat这段命令做的是「把工具集塞进 SDK 根目录下的标准位置」。latest这个目录名不是随便起的,sdkmanager 会把它当作版本标识,后续sdkmanager --list能正常输出就说明路径对了。如果你用的是 PowerShell,move换成Move-Item,其余逻辑一样。参数上唯一要盯的是最终bin的绝对路径,后面配环境变量全靠它。
2.2 环境变量与 JAVA_HOME 的硬性要求
sdkmanager 是 Java 程序,没有JAVA_HOME会直接报ERROR: JAVA_HOME is not set。注意它要的是 JDK 而不是 JRE,JDK 8 到 JDK 17 都能跑,但 JDK 21 在部分老版本工具上会有模块访问告警。我一般用 JDK 17,兼容性最稳。配置时把%JAVA_HOME%\bin和D:\Android\Sdk\cmdline-tools\latest\bin都加进 PATH,然后开新终端验证。
# 验证三件事:java 能跑、sdkmanager 能跑、路径没串 java -version sdkmanager --version where sdkmanagerjava -version输出里要能看到17.x;sdkmanager --version正常会打印构建号,如果报Could not determine SDK root就回到 2.1 检查目录层级;where sdkmanager用来确认系统找到的是你刚配的那个 bat,而不是别处残留的旧版本。这三步过了,才算真正把 commandlinetools 装好。
2.3 用 sdkmanager 装第一批组件
工具通了之后,第一件事是装platform-tools(含 adb、fastboot)和platforms;android-34这类平台包。命令里分号在 Windows cmd 下要加引号,否则会被当命令分隔符。
# 查看可安装列表,确认包名拼写 sdkmanager --list # 装平台工具和指定 API 平台 sdkmanager "platform-tools" "platforms;android-34" # 接受许可,否则后续构建会卡在 license 检查 sdkmanager --licenses--list会输出已安装和可用两栏,包名必须完全一致,比如build-tools;34.0.0不能写成build-tools;34。--licenses会逐条让你输入y,这一步在 CI 里可以用yes | sdkmanager --licenses自动过。装完后platform-tools目录下会出现adb.exe,把它加进 PATH,adb devices能列出设备就说明整条链路通了。这里踩坑最多的是代理和镜像,如果下载卡住,检查网络出口,不要盲目重试。
3. 用这套 SDK 跑通编译与设备调试:从 adb 到构建脚本
3.1 adb 与 fastboot 的最小验证
SDK 装好不等于能用,先验证 adb 能不能识别设备。手机开 USB 调试,插上后执行:
adb devices adb shell getprop ro.build.version.sdk第一行列出设备序列号和device状态才算正常,如果显示unauthorized是手机上没点「允许调试」,显示offline通常是驱动或线材问题。第二行读的是设备 API 级别,用来确认你装的platforms;android-34和目标机是否匹配。fastboot 只在刷机或解锁时用,fastboot devices能列出即可,日常调试用不到。
3.2 不装 Android Studio 怎么编译一个 APK
命令行编译靠 Gradle,但 Gradle 需要知道 SDK 在哪。在项目根目录建local.properties,写一行sdk.dir=D\:\\Android\\Sdk,注意 Windows 路径里的反斜杠要转义。然后直接用项目自带的 gradlew。
# 在项目根目录执行,assembleDebug 产出可调试 APK gradlew.bat assembleDebug # 产物默认在 app\build\outputs\apk\debug\ 下assembleDebug走的是 debug 变体,不需要签名配置;如果要 release 包,得先在build.gradle里配 signingConfig,否则会报Keystore file not found。这一步常见的翻车是 Gradle 版本和 AGP 版本不匹配,报错里会明确写Minimum supported Gradle version is X,照着改gradle-wrapper.properties里的 distributionUrl 即可。整个流程不需要 Android Studio 参与,vscode 加命令行足够。
3.3 多版本 SDK 共存与目录规划
做 Android 测试或维护老项目时,经常要同时留 android-30、android-33、android-34 三个平台。sdkmanager 支持并存,装的时候直接列多个包名即可,磁盘占用每个平台大约几百 M。建议把build-tools也按版本装齐,因为不同 AGP 版本对 build-tools 有硬性要求。目录上保持platforms、build-tools、platform-tools平级,不要手动改名,sdkmanager 靠目录名索引。清理时用sdkmanager --uninstall "platforms;android-30",别直接删文件夹,否则残留的 package.xml 会让后续--list报错。
4. 避坑与排查:commandlinetools 落地时最容易翻车的 5 个点
4.1 现象:sdkmanager 报 Could not determine SDK root
原因几乎都是目录层级不对。sdkmanager 从自己所在路径往上找两级,期望看到cmdline-tools和platform-tools平级。如果你解压后直接是D:\cmdline-tools\bin,它往上找两级到了D:\,自然找不到。解决就是按 2.1 重建Sdk\cmdline-tools\latest\bin结构,移动完开新终端再试。
4.2 现象:licenses 一直提示未接受,构建中断
原因是--licenses没跑完,或者换了 SDK 根目录后 license 文件没跟过来。license 存在<SDK_ROOT>\licenses下,迁移 SDK 时要把这个目录一起拷走。解决是重新执行sdkmanager --licenses全部输入 y,CI 环境用yes |管道自动确认。注意 license 和具体包绑定,装了新平台可能要再跑一次。
4.3 现象:adb devices 列表为空或显示 offline
先排除线材和接口,换根线换 USB 口试。然后看设备管理器里有没有未识别驱动,Windows 上常见是缺 OEM 驱动。offline 状态多半是 adb 版本太老,adb version低于设备系统要求时升级 platform-tools 即可。还有一种玄学情况是 5037 端口被别的进程占用,netstat -ano | findstr 5037找到 PID 结束掉再重启 adb。
4.4 现象:Gradle 构建报 SDK location not found
local.properties缺失或路径写错。这个文件默认不进版本控制,换机器后必须手动建。路径里盘符后的冒号要转义成\:,反斜杠要双写。如果用的是 WSL 或 Git Bash,路径格式又不一样,建议统一在 cmd 或 PowerShell 里跑 gradlew,避免路径解析差异。
4.5 现象:下载组件极慢或超时
sdkmanager 默认走 Google 的源,网络不稳时会卡在某个包上。不要反复重试同一个命令,先sdkmanager --list看能否正常拉列表,列表都拉不到就是网络层问题。能拉列表但下载慢,可以换时间段或换网络环境。已经下了一半的包会在临时目录留缓存,重跑通常能续上,不用手动清。
5. 把 commandlinetools 用成可复现的构建底座:脚本化与版本锁定
真正让这套东西产生长期价值的,不是装一次能用,而是把它变成可复现的脚本。我现在的习惯是写一个setup-sdk.ps1,把目录创建、环境变量、组件安装、license 接受全部固化,换机器时一条命令跑完。核心思路是「版本号写死、路径参数化、失败即停」。
# setup-sdk.ps1 关键片段,参数化 SDK 根目录 param([string]$SdkRoot = "D:\Android\Sdk") $tools = "$SdkRoot\cmdline-tools\latest\bin" # 装固定版本组件,避免 latest 漂移 & "$tools\sdkmanager.bat" "platform-tools" "platforms;android-34" "build-tools;34.0.0" # 自动接受许可 "y`n" * 20 | & "$tools\sdkmanager.bat" --licenses这段脚本的价值在于「锁定」。platforms;android-34和build-tools;34.0.0都带明确版本,不会因为某天 Google 更新 latest 导致构建行为变化。"yn" * 20是给 license 交互喂足够多的 y,比yes在 PowerShell 里更稳。参数$SdkRoot` 让同一份脚本能适配不同机器,CI 上直接传参即可。
验证脚本是否可靠,有个简单办法:找一台干净机器或新建一个 Windows 用户,跑完脚本后执行sdkmanager --list_installed,输出里应该正好是你锁定的那几个包,不多不少。如果多出别的版本,说明某处用了隐式 latest,回去把包名补全。这个「装完即校验」的习惯帮我省过很多次环境漂移的后悔药。
最后一个技巧是关于 zip 本身的校验。下载完commandlinetools-win-8512546_latest.zip后,先比对官方公布的 SHA-256,再解压。我吃过一次亏,包在下载中途损坏,解压出来的 bat 文件不完整,报错信息却指向 JAVA_HOME,白白排查半小时。现在我的流程固定成「校验哈希 → 解压 → 建目录 → 跑脚本 → 校验已装列表」,五步走完才算环境就绪。这套流程不依赖任何图形工具,一台只有命令行的 Windows 机器就能从零搭出可编译、可调试、可复现的 Android SDK 底座。希望帮到你。
本文还有配套的精品资源,点击获取