Android Studio无法接受Android Licenses 执行flutter doctor报错
问题根因
报错的核心诱因就是你的Mac用户名包含带前置空格的(Deleted)字段,Flutter脚本在拼接Android cmdline-tools的classpath路径时,没有对路径中的空格做转义处理,错误将空格识别为路径分隔符,把原本完整的SDK路径截断为(Deleted).Library.Android.sdk.cmdline-tools.latest,自然无法找到对应主类。这个问题和SDK版本、Java 8环境无关,就是特殊字符+空格触发的路径解析bug。
可直接落地的解决方案
方案1:快速修复(无需修改用户名,5分钟可解决)
- 先编辑当前shell的配置文件,Mac默认用zsh的话就打开
~/.zshrc,用bash的话打开~/.bash_profile,在文件末尾追加以下环境变量配置,所有路径都用双引号包裹,强制转义空格:
export ANDROID_HOME="$HOME/Library/Android/sdk" export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
- 保存文件后执行对应命令让配置生效,zsh执行
source ~/.zshrc,bash执行source ~/.bash_profile - 不要直接运行
flutter doctor --android-licenses,先进入cmdline-tools的bin目录手动调用sdkmanager接受许可证:
cd "$ANDROID_HOME/cmdline-tools/latest/bin" ./sdkmanager --licenses
执行后所有弹窗提示都输入y确认接受,完成后回到任意路径执行flutter doctor,许可证相关的报错就会消失。
方案2:永久修复(避免后续其他开发工具踩同类路径坑)
Mac用户名包含空格、特殊括号字符除了会触发Flutter的路径bug,还可能导致其他命令行开发工具、编译脚本出现同类路径解析错误,可备份系统数据后,在「系统设置-用户与群组-右键当前用户-高级选项」里修改用户名为不带空格、无特殊括号的普通命名,重启设备后所有路径相关的隐患会彻底消除,后续直接运行flutter doctor --android-licenses也不会再报错。
排查提示:遇到这类找不到主类、找不到文件的命令行报错,先看报错里的路径是不是和你实际的文件路径一致,如果路径从空格/特殊字符位置截断,100%是转义问题,不用反复重装SDK、重装Java浪费时间。
内容的提问来源于stack exchange,提问作者John.Hicks
相关产品推荐
相关产品推荐

