Ubuntu 22安装Flutter时遇cmdline-tools缺失及KeyError问题求助
解决Ubuntu 22下Android SDK缺失cmdline-tools的终端方案
问题根源
通过apt install android-sdk安装的是Ubuntu打包的SDK版本,自带工具链不全;而单独用apt-get install sdkmanager安装的工具与官方SDK不兼容,导致无法识别cmdline-tools;latest组件。
终端下的解决步骤
1. 定位Android SDK安装路径
先确认SDK的具体安装位置,执行:
dpkg -L android-sdk
默认路径通常为/usr/lib/android-sdk,后续用$ANDROID_HOME指代该路径(可先执行export ANDROID_HOME=/usr/lib/android-sdk简化输入)。
2. 使用SDK原生sdkmanager(弃用apt安装的版本)
apt安装的sdkmanager是第三方工具,与官方SDK适配性差,必须用SDK目录内的原生工具:
- 检查SDK目录下是否存在原生sdkmanager:
ls $ANDROID_HOME/tools/bin/
若存在,直接用绝对路径执行安装命令(需sudo获取系统目录写入权限):
sudo $ANDROID_HOME/tools/bin/sdkmanager --install "cmdline-tools;latest"
3. 原生sdkmanager不存在时,手动安装cmdline-tools
如果apt安装的SDK过于精简,没有原生sdkmanager,需手动下载官方组件:
- 终端下载Linux版cmdline-tools压缩包:
wget https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip
- 创建指定目录结构:
sudo mkdir -p $ANDROID_HOME/cmdline-tools/latest
- 解压并移动文件到对应目录:
sudo unzip commandlinetools-linux-10406996_latest.zip -d tmp_dir sudo mv tmp_dir/cmdline-tools/* $ANDROID_HOME/cmdline-tools/latest/ sudo rm -rf tmp_dir commandlinetools-linux-10406996_latest.zip
4. 配置环境变量
将cmdline-tools的bin目录加入系统PATH,确保sdkmanager可全局调用:
export ANDROID_HOME=/usr/lib/android-sdk export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH
若需永久生效,将上述两行添加到~/.bashrc或~/.zshrc文件末尾,执行source ~/.bashrc(对应shell配置文件)使更改生效。
5. 验证安装
执行以下命令检查组件是否安装成功:
sdkmanager --list
再运行flutter doctor,此时应不再提示缺失cmdline-tools组件。
内容的提问来源于stack exchange,提问作者ailauli69
相关产品推荐
相关产品推荐

