Android SDK下载与配置全攻略:从环境变量到常见问题

发布时间:2026/9/30 6:31:43

Android SDK下载与配置全攻略:从环境变量到常见问题 做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路径是否正确基本能省掉一半时间。多项目协同开发时省下的时间是实打实的。祝下载顺利编译通过。
延伸阅读

更多相关文章

2026/9/30 6:26:43

Android智慧服务App实战:文件共享、状态同步与离线处理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 6:26:43

群晖 DSM 7.0 保留数据换大硬盘:RAID/SHR 逐块扩容指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 8:21:49

AI项目总翻车?四个风险域框架帮你系统排查

1. 从“四个风险域”说起:为什么AI项目总在同一个地方翻车做AI项目这些年,我越来越觉得,真正让项目翻车的往往不是模型不够强,而是团队对风险的认知太窄。很多人一提AI风险,脑子里只有“模型会不会胡说八道”这一件事&…

2026/9/30 8:21:49

接口安全测试:容易被忽略的 API 高危漏洞盘点

接口安全测试:容易被忽略的 API 高危漏洞盘点 前言 现在前后端分离、小程序、APP、H5 业务,几乎所有交互都依靠 API 接口。很多安全测试人员习惯性使用扫描器,重点检测 SQL 注入、XSS 这类传统 Web 漏洞。但 API 场景下,大量高危…

2026/9/30 8:21:49

IS62WV102416BLL替代EMI国产高速异步SRAM

在工控主板、通信设备、运动控制器等硬件设计中,IS62WV102416BLL是ISSI一款非常经典的16Mbit(1024K16)高速异步CMOS SRAM。器件采用2.4V‑3.6V供电,25ns访问速度,配备CS1、CS2双片选控制,支持UB#、LB#高低字…

2026/9/30 8:21:49

大模型训练显存优化:参数空间切分实战指南

1. 参数空间切分到底在解决什么问题 大模型训练这件事,外行看热闹,内行看显存。很多人第一次接触LLM训练时,最直观的感受就是:模型大得离谱,显存永远不够,训练速度永远比预期慢。但真正做过一段时间之后你会…

2026/9/30 8:21:49

Node.js升级全指南:从LTS版本选择到全局包迁移避坑

写这篇文章之前,我先说个背景。很多前端朋友都有过这种经历:项目起来了,一运行发现node -v还是 16 甚至 14,新版框架要求 Node 20,或者某些依赖报错,最后排查半天发现是 Node 版本太低。升级 Node.js 这个操…

2026/9/30 8:16:48

Model-Optimizer实战:训练图到推理图的模型部署优化指南

1. Model-Optimizer 解决的是什么场景下的什么问题:训练收敛不等于部署可用我第一次认真研究 Model-Optimizer 这个工具,是因为一次边缘设备部署翻车事件。模型在 GPU 上推理很快,FPS 能跑到 300,可一搬到目标硬件上,延…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑