Flutter执行flutter doctor报Android Sdkmanager not found如何解决
故障根因
Flutter 3.10及以上版本调整了Android SDK组件的校验逻辑,强制要求cmdline-tools组件必须存放在Android SDK目录下的cmdline-tools/latest子文件夹内。网上绝大多数排查方案只提到安装组件、配置环境变量,没提这个路径强制规则:如果直接把cmdline-tools文件放在cmdline-tools/根目录、用版本号命名子文件夹(比如cmdline-tools/11.0)、或者出现双层嵌套目录,不管怎么配环境变量都会触发sdkmanager识别失败。
分步修复操作
- 第一步:清理残留的错误安装文件
找到本机Android SDK根目录:- Windows默认路径:
C:\Users\你的用户名\AppData\Local\Android\Sdk - Mac默认路径:
~/Library/Android/sdk - Linux默认路径:
~/Android/Sdk
进入目录后直接删除整个cmdline-tools文件夹,清空所有残留文件。
- Windows默认路径:
- 第二步:安装符合规范的cmdline-tools组件
打开Android Studio → 进入Settings → Appearance & Behavior → System Settings → Android SDK → 切换到SDK Tools标签页
勾选标记为Android SDK Command-line Tools (latest) 的选项,不要选带旧版本号的非latest组件,点击Apply等待安装完成。注意:不建议手动从官网下载压缩包解压,手动解压90%概率会出现目录层级错误,用Android Studio内置SDK管理器安装会自动生成符合Flutter校验规则的目录结构。
- 第三步:校验目录结构正确性
安装完成后回到SDK根目录下的cmdline-tools文件夹,确认目录结构符合要求:- 错误结构(识别失败):
cmdline-tools/bin/sdkmanager、cmdline-tools/cmdline-tools/bin/sdkmanager、cmdline-tools/11.0/bin/sdkmanager - 正确结构(可正常识别):
cmdline-tools/latest/bin/sdkmanager
如果是之前手动解压出现双层嵌套,直接把内层存放bin目录的那层文件夹重命名为latest,移动到外层cmdline-tools目录下,删除空的残留文件夹即可。
- 错误结构(识别失败):
- 第四步:修正环境变量配置
在系统环境变量中新增ANDROID_SDK_ROOT变量,值填写Android SDK根目录的绝对路径(不要填到cmdline-tools等子目录)。
编辑系统Path变量,新增以下三个条目,删除之前配置的其他错误Android相关路径:- Windows环境:
%ANDROID_SDK_ROOT%\platform-tools、%ANDROID_SDK_ROOT%\cmdline-tools\latest\bin、%ANDROID_SDK_ROOT%\emulator - Mac/Linux环境:
$ANDROID_SDK_ROOT/platform-tools、$ANDROID_SDK_ROOT/cmdline-tools/latest/bin、$ANDROID_SDK_ROOT/emulator
- Windows环境:
- 第五步:清理缓存重新校验
关闭所有已打开的终端/命令提示符窗口,重新打开一个普通权限的终端(不需要管理员权限),依次执行以下命令:- 执行
flutter config --android-sdk "你的Android SDK根目录绝对路径",强制指定Flutter读取的SDK路径 - 执行
flutter doctor --android-licenses,一路输入y接受所有Android许可证协议 - 执行
flutter doctor,确认Android toolchain条目显示正常对勾,即修复完成。
- 执行
兜底方案
如果以上步骤操作后仍然报错,按以下顺序排查:
- 删除Flutter SDK目录下的
bin/cache文件夹,重新执行flutter doctor,会自动重建损坏的校验缓存 - Windows用户检查SDK所在路径、Windows用户名是否包含中文、空格、特殊字符,如果有,把Android SDK移动到纯英文无特殊字符的路径下(比如
D:\Android\Sdk),重新配置环境变量和Flutter SDK路径即可 - 检查本地是否安装了多个版本的Java/JDK,Flutter 3.x版本要求使用JDK 17,把系统
JAVA_HOME环境变量指向Android Studio自带的JRE路径即可(默认路径:Android Studio安装目录下的jbr文件夹)
内容的提问来源于stack exchange,提问作者Pragnya Sahu
相关产品推荐
相关产品推荐

