No SDKs were found:Android Studio 未检测到已安装的 Android SDK
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
ScandalRafflesia 2026-02-04 07:50关注```html一、现象确认:验证“No SDKs were found”是否为真误报
启动 Android Studio 后,在 Welcome 界面或新建项目向导中出现该提示,并不等价于 SDK 真的不存在——它仅表明 AS 的
SDK Manager未在预期位置识别到符合其校验规则的 SDK 实例。可通过以下命令交叉验证:# Linux/macOS 检查环境变量与路径真实性 echo $ANDROID_SDK_ROOT ls -la "$ANDROID_SDK_ROOT" | head -15 # Windows(PowerShell) Write-Output $env:ANDROID_SDK_ROOT Get-ChildItem $env:ANDROID_SDK_ROOT -Directory | Select-Object Name注意:AS(Iguana+)已弃用
ANDROID_HOME,仅信任ANDROID_SDK_ROOT;若两者共存且值不同,将导致静默忽略。二、结构诊断:SDK 目录完整性黄金检查表
Android Studio 要求 SDK 目录必须包含以下最小可行子目录集(缺一不可),否则拒绝加载:
必需子目录 作用说明 典型内容示例 platforms/存放 Android API 级别平台(如 android-34) android-34/→android.jar,data/platform-tools/ADB、fastboot 等核心调试工具 adb,fastboot,dmtracedumptools/或cmdline-tools/latest/SDK Manager、avdmanager 等元工具(新版强制要求后者) bin/sdkmanager,bin/avdmanager⚠️ 常见陷阱:仅解压
commandlinetools-linux-*.zip得到的是cmdline-tools/根目录,但 AS 要求其下必须存在latest/子目录,且该目录内需含完整可执行文件树(需手动创建并移动)。三、权限与所有权:Linux/macOS 下的隐形拦路虎
在非 root 用户下解压 SDK(尤其使用
sudo tar或从 root 权限下载),会导致~/.android/和$ANDROID_SDK_ROOT所有者为root,而 AS 进程以普通用户运行,无法读取platforms/android-34/中的符号链接或 JAR 文件。修复命令(以 SDK 路径
/opt/android-sdk为例):sudo chown -R $USER:$USER /opt/android-sdk sudo chmod -R u+rwX /opt/android-sdk # 特别加固:确保 .android 目录归属正确 chown -R $USER:$USER ~/.android验证:
ls -ld /opt/android-sdk platforms/ platform-tools/ tools/输出首列应为drwxr-xr-x且第三字段为当前用户名。四、路径映射冲突:AS 内置默认路径 vs 自定义路径
Android Studio(尤其是 Arctic Fox 及之后版本)在首次启动时会硬编码写入默认 SDK 路径到其配置数据库(
$HOME/.AndroidStudio*/config/options/jdk.table.xml),即使你设置了ANDROID_SDK_ROOT,它仍优先读取此 XML 中的<option name="path" value="...">。解决路径映射失配的两种权威方式:
- 软链接法(推荐):将真实 SDK 目录软链至 AS 默认路径
ln -sf /opt/android-sdk ~/Library/Android/sdk(macOS)
mklink /D "%LOCALAPPDATA%\Android\Sdk" "D:\android-sdk"(Windows CMD) - 重置配置法:关闭 AS → 删除
$HOME/.AndroidStudio*/config/options/jdk.table.xml→ 重启 AS 并在 Settings → Appearance & Behavior → System Settings → Android SDK 中手动指定路径
五、Iguana+ 强制初始化机制:为何“裸 SDK”被拒?
自 Android Studio Iguana(2023.2.1)起,引入了 SDK Schema Versioning 机制:AS 启动时会扫描 SDK 目录下的
.sdk-schema-version文件(若不存在则拒绝加载),该文件由sdkmanager --update或首次通过 GUI SDK Manager 安装组件时自动生成。这意味着:即使你手动复制了完整的
platforms/、platform-tools/,只要未执行过任何sdkmanager操作,AS 就判定其为“未初始化 SDK”。修复流程如下:graph TD A[启动终端] --> B[cd $ANDROID_SDK_ROOT/cmdline-tools/latest] B --> C[./sdkmanager --list_installed] C --> D{返回非空列表?} D -->|否| E[./sdkmanager \"platforms;android-34\" \"platform-tools\"] D -->|是| F[AS 应自动识别] E --> F执行后,AS 将在 SDK 根目录生成
```.sdk-schema-version和.knownPackages,完成可信注册。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 软链接法(推荐):将真实 SDK 目录软链至 AS 默认路径