
做Android开发绕不开的一个东西就是SDK。这两天不少人都在搜“Android SDK下载”搜这个词的通常是刚入坑的新手也可能是有段时间没碰Android、重新捡起来的老开发。不管哪种下载本身不是难题难的是搞明白到底该下哪一个、怎么配环境、装完之后从哪开始。这篇就把SDK下载这件事从头到尾捋一遍从最简单的一句话解释到实操配置再到常见问题和排查思路争取让你看完不用再翻别的教程。2. 搞清楚SDK是干什么的才能知道要下载什么很多人一搜“Android SDK教程”“Android SDK官网下载”然后对着一个英文页面发呆完全不知道要下哪个包。这不怪你因为SDK本身不是一个单一的安装包而是一整套工具的集合统称Android SDKSoftware Development Kit软件开发工具包。2.1 SDK、平台工具、构建工具到底有什么区别刚接触Android开发时我老把几个概念搞混后面才发现它们各管一摊。SDKSoftware Development Kit所有开发工具的集合名称包括平台库、构建工具、平台工具、模拟器镜像等。Platform平台即android.jar代表某个安卓版本API级别的系统接口库比如API 29对应Android 10API 34对应Android 14编译时用来编译你的代码。Platform-Tools平台工具包含adb、fastboot等命令行工具调试设备时用。Build-Tools构建工具负责编译资源、打包APK的工具。Command-Line Tools命令行工具包含sdkmanager等命令用于在终端里下载和管理SDK组件。如果你装了Android Studio其实IDE已经自带SDK通常不需要单独下载。只有当你用命令行开发、做CI/CD持续集成或想在非Android Studio环境下构建项目时才需要单独下SDK。2.2 为什么SDK下载容易遇到版本混乱关于SDK最头痛的问题就是版本对齐。每个Android版本对应一个API级别API Level比如Android 6.0对应API 23Android 10对应API 29Android 14对应API 34。你的项目build.gradle文件里通常写着android { compileSdk 34 targetSdk 34 minSdk 21 }这里compileSdk 34就意味着本地必须装有API 34的Platform不然Gradle会提示你下载或者直接报错。各类版本对应关系Android版本API级别对应Platform版本Android 6.023android-23Android 1029android-29Android 1130android-30Android 1231android-31Android 1333android-33Android 1434android-34Android 1535android-35我说句实在话下载SDK时最容易踩的坑就是把Platform-Tools和Build-Tools当作同一个东西。adb命令属于Platform-Tools而aapt、d8这些属于Build-Tools。它们版本号可以不一致大多数情况下各装各的就行了。3. 多种下载方式对比哪个才适合你SDK下载常见的途径有这么几个我用表格梳理一下方便你根据自身情况选。下载方式适合人群优点缺点通过Android Studio的SDK Manager大部分开发者可视化、自动管理依赖必须先安装Android Studio官方Command-Line Tools命令行安装命令行/CI/无图形界面环境灵活、可控需熟悉命令行操作从已有项目的Gradle或SDK Manager自动拉取项目开发场景按需下载、版本自动匹配首次构建耗时较长3.1 通过Android Studio下载最稳妥Android Studio是Google官方的IDE版本分Android Studio Koala、Ladybug等新版本已经用动物名加年份命名了。安装完成后第一次打开到欢迎界面右侧有个“More Actions”点进去找“SDK Manager”或者直接打开主界面后依次点击File → Settings → Appearance Behavior → System Settings → Android SDK。在这里能看到的几个关键项分别是SDK Platforms勾选你需要的API级别平台。SDK Tools包含Android SDK Build-Tools、Platform-Tools、Emulator等。SDK LocationSDK安装路径默认在用户目录下比如C:\Users\你的用户名\AppData\Local\Android\Sdk。这里有个细节如果你不确定是否需要某个版本可以把Android SDK Platform-Tools和当前最新的Build-Tools勾上再勾选你项目compileSdk对应的平台版本。不用全部装真的用不上纯占硬盘。我建议新手用这种方式因为Android Studio会自动把下载好的SDK和IDE绑定省得手动配置环境变量。3.2 通过命令行下载适合无界面或CI环境有时候你需要在Linux服务器、Docker容器或远程开发机上配置SDK这时候没有图形界面Android Studio装不了。这时就需要Command-Line Tools了。步骤大概是打开Android开发者官网找到Command-Line Tools那一栏。根据你的操作系统下载对应的zip包Windows选winLinux选linuxmacOS选mac。解压后把解压的cmdline-tools目录里的bin目录暴露到PATH中或者运行bin/sdkmanager命令。**注意**新版Command-Line Tools下载后会带一个cmdline-tools目录通常需要你手动把目录结构调整成cmdline-tools/latest/bin这样sdkmanager才能正常工作。很多人在这一步卡住老版本直接解压就能用新版本需要先建个latest目录再移进去。推荐一个适合初学者的下载流程# 下载Android SDK Command-Line Tools并解压到 ~/android-sdk mkdir -p ~/android-sdk/cmdline-tools cd ~/android-sdk/cmdline-tools # 假设你已经下载并解压到了当前目录 # 把解压后的文件夹重命名为 latest mv cmdline-tools latest cd ~/android-sdk/cmdline-tools/latest/bin # 查看已安装的SDK包 ./sdkmanager --listsdkmanager --list会输出长长的一串列表前面有Installed packages已安装后面是Available Packages可安装包括platform-tools、platforms;android-35、build-tools;35.0.0这些。安装命令示例# 安装platform-tools包含adb ./sdkmanager platform-tools # 安装API 35的Platform ./sdkmanager platforms;android-35 # 安装Build-Tools ./sdkmanager build-tools;35.0.0--list后面有没有引号都行但包名里有分号和引号嵌套所以命令行工具建议带引号。你可以把它理解成包管理器类似npm或pip但操作对象是SDK组件。安装时它还会顺带问你是否接受许可协议输入y回车就行了。3.3 Gradle自动管理SDK依赖项目场景如果是新建项目Android Studio/Gradle会在构建时检查SDK版本是否齐全不全时会弹窗提示并按需自动下载前提是你给了IDE对应权限。老项目一般compileSdkVersion固定比如compileSdkVersion 29那Gradle就会尝试找API 29没有就报错或提醒装。很多项目在local.properties里用sdk.dir指定SDK路径或者在系统环境变量里用ANDROID_HOME或ANDROID_SDK_ROOT指定。如果路径配错了Gradle会报类似于“SDK location not found”的错误。这时候需要检查这两处保证路径和SDK实际安装位置一致。3.4 不去官网而是下载第三方搬运的安装包可行吗说了这么多你的问题可能是我不想去英文官网有没有国内镜像或者别的渠道能下载我不建议用任何非官方渠道下载SDK安装包尤其要避免传播盗版和修改过的包。SDK是开发者日常最核心的依赖工具一旦被人植入恶意代码损失巨大。同时为了安全合规请大家只使用官方正规渠道下载。如果你在官网下载速度慢有个比较合理的办法是用Android Studio内置的SDK Manager它会走Google官方CDN通常比浏览器直连稳定。下载过程中偶尔会卡在“Loading”界面别急着关多点几次刷新或者换个时间段再试。4. 环境变量配置Android SDK下载安装之后最关键的一步很多人在SDK下载安装完成后跟着网上教程去设环境变量结果发现自己配完了还是找不到adb。我花了不少时间才搞清楚为什么这里一次性讲透。4.1 为什么需要环境变量简单说环境变量是系统级别的“快捷键”。设好之后在终端里输入adb系统会自动去相应目录找adb这个可执行文件。不设的话你只能每次输全路径比如C:\Users\你的用户名\AppData\Local\Android\Sdk\platform-tools\adb.exe效率很低。对Windows用户而言最核心的变量有两个变量名推荐值作用ANDROID_HOMEC:\Users\你的用户名\AppData\Local\Android\SdkAndroid Studio和命令行工具都会读取ANDROID_SDK_ROOT和ANDROID_HOME相同部分新版本工具会优先读取这个PATH追加%ANDROID_HOME%\platform-tools和%ANDROID_HOME%\cmdline-tools\latest\bin让adb、sdkmanager等命令全局可用很多人只配了ANDROID_HOME忘了往PATH里加platform-tools所以adb还是找不着。还有一点新版本的Gradle会在ANDROID_SDK_ROOT和ANDROID_HOME之间优先找ANDROID_SDK_ROOT尽管官方说后者为了兼容还保留着。两个都配上最省事。4.2 Windows环境变量配置步骤在“此电脑”上右键 → 属性 → 高级系统设置。点击“环境变量”。在“系统变量”或“用户变量”中新建一个变量变量名填ANDROID_HOME变量值填SDK所在路径。再新建一个ANDROID_SDK_ROOT值一样。找到Path变量点击编辑新建两条%ANDROID_HOME%\platform-tools和%ANDROID_HOME%\cmdline-tools\latest\bin。一路确定保存后重开终端输入adb --version测试。如果输出类似Android Debug Bridge version 1.0.41那就说明环境变量配置成功了。4.3 Linux/macOS环境变量配置在~/.bashrc或~/.zshrc里追加export ANDROID_HOME$HOME/android-sdk export ANDROID_SDK_ROOT$HOME/android-sdk export PATH$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin然后执行source ~/.bashrc或source ~/.zshrc让配置生效。这里有个细节sdkmanager在Linux/macOS下是bin/sdkmanager脚本Windows下是bin\sdkmanager.bat。如果你在Windows的cmd里输入sdkmanager没反应有可能是你没把latest\bin加到PATH里。4.4 flutter工具链报错时如何检查SDK如果你在开发Flutter项目有时候会看到类似Android toolchain - develop for Android devices (Android SDK version 37.0.0)这样的输出。这其实是Flutter在检查Android工具链没有问题的话它会列出版本号有问题会直接告诉你缺什么。flutter doctor会检查四个维度Android SDK是否安装是否安装了cmdline-tools组件是否接受了SDK许可协议是否存在Java环境JDK前两项SDK下载时就能解决第三项需要在命令行里执行flutter doctor --android-licenses或者手动通过sdkmanager --licenses接受许可第四项需要装JDK17或21比较稳妥。提示如果flutter doctor报错说找不到cmdline-tools多半是因为没有完成latest目录的调整或者没有把cmdline-tools\latest\bin加进PATH。5. 进阶话题sdkmanager常见用法、好习惯与避坑技巧这一节我要说点实战细节。很多教程只讲到“下载安装完配置完环境变量”就完了但平时开发中你还是会遇到各种问题这里集中回答一下。5.1 如何用sdkmanager做精细化管理假设你已经配置好cmdline-tools想只装某些组件而不装模拟器模拟器挺占硬盘的可以这样# 查看已安装组件 sdkmanager --list_installed # 查看所有可安装组件很长的列表可以结合 grep 过滤 sdkmanager --list | grep platforms;android- # 安装指定版本 sdkmanager platforms;android-34 # 卸载指定版本 sdkmanager --uninstall platforms;android-34注意sdkmanager在做“安装指定版本”时并不会自动帮你装build-tools所以你要按需手动装。如果提示“SDK component is already installed”说明你已经装过了不用担心。前面提到可以用--list_installed来查看已安装但如果你只用--list已经安装的包会带Installed标记版本号后面会带一个括号。如果你看到包名和版本都对就可以直接使用。5.2 新版本SDK平台的命名规则你可能会注意到现在SDK平台自动生成的目录名已经变了。老的SDK目录通常长这样platforms/android-29。新版SDK Manager下载后依然是这个目录结构但包名里多了一些混淆信息比如platforms;android-35所以你在命令行里下载时要按这个格式来。值得留意的是每年Google都会出一个新大版本比如2024年是API 35Android 15到了2025年API 36Android 16又开始推。你不用追着最新版本装除非你开发的项目确实需要用到新API或者你用的是最新版Android Studio。有些新老项目混着开发的话SDK Manager里能装好几个版本也没问题。5.3 Android Studio汉化、语言包和常见卡顿很多新手搜“android studio怎么设置中文”这个和SDK没直接关系但既然相关我也顺带说一下。Android Studio自带中文语言包支持但它不像浏览器插件那样一点就好使。明确一点Android Studio的官方中文界面切换通常需要你去插件市场搜索Chinese Language Pack或者在启动时通过IDE的Settings里的Language and Fonts设置。在Android Studio 2024版本其实已经默认根据系统语言做了一定适配但如果你想要完整汉化可以去Settings → Plugins里搜“Chinese (Simplified) Language Pack”并安装重启即可。这个不影响SDK下载。至于打开Android Studio很慢多数情况是首次启动要下载Gradle依赖和索引项目文件跟SDK体积大也有关系。每次SDK Manager下载新组件时Android Studio都会重新扫描一遍容易出现短暂卡顿耐心等一下就好。5.4 常见问题速查表问题可能原因解决办法下载SDK卡在10%或0%网络不稳定、连接Google服务器慢设置代理或换时间段再试或用Android Studio自带下载adb: command not found未将platform-tools加入PATH配置环境变量后重开终端“SDK location not found”local.properties中sdk.dir路径错误或环境变量缺失检查路径确保指向SDK的根目录Gradle构建时提示某平台版本缺失本机未安装对应API级别打开SDK Manager勾选对应Platformsdkmanager命令找不到cmdline-tools目录未调整为latest按上文重新整理目录结构flutter doctor提示Android licenses not accepted未接受SDK许可协议运行flutter doctor --android-licenses全部选yAndroid Studio启动后SDK Manager为空SDK路径错误或组件损坏在SDK Manager里重新设置SDK Location我见过的最多一种情况就是SDK组件其实都下了但IDE和终端用的SDK路径不一样导致两边互相不认。所以路径统一很重要要么全部用默认要么在local.properties里统一指定。5.5 关于SDK下载踩过的坑和心得如果你是从零开始的新手我建议第一次走Android Studio默认路径让它自己下载SDK。你会发现在用户目录下多出%USERPROFILE%\AppData\Local\Android\Sdk这个文件夹里面除了platforms、platform-tools、build-tools外还有emulator和system-images。整个SDK占空间一般10G~30G所以硬盘别太紧张。对于有经验一点的开发者我会建议你想办法固定SDK版本。比如团队项目里大家都用API 34你就不用装35。多装版本不是不行但没必要。有些老项目编译时需要旧版Build-Tools比如build-tools;30.0.3这种也到SDK Manager里单独安装即可。SDK是个会随Android系统持续迭代的活物。你可能一直在下载、更新、选版本这个过程本身就是开发的一部分。很多新人觉得装软件最烦其实只要你明白SDK就是Android开发的“工具箱”不同版本就是不同年份的工具包理解起来就容易多了。注意SDK的下载和使用完全基于官方渠道和正版授权。这里面不存在任何“绕过限制”的手段我们要坚持合法合规的开发环境。我也提醒各位别使用来路不明的第三方SDK下载站否则安全风险很高一旦植入恶意代码轻则项目的签名密钥泄露重则应用被植入后门后果非常严重。最后说个小技巧如果你同时开发Flutter、Android原生或React Native项目最好把SDK路径固定在同一个位置。这样每次遇到构建问题先检查ANDROID_HOME路径是否正确基本能省掉一半时间。多项目协同开发时省下的时间是实打实的。祝下载顺利编译通过。