WWF世界自然基金会 2026-02-04 07:50 采纳率: 98.8%
浏览 1
已采纳

No SDKs were found:Android Studio 未检测到已安装的 Android SDK

**问题描述:** Android Studio 启动或新建项目时提示 “No SDKs were found”(未检测到任何 SDK),即使已手动下载并解压了 Android SDK(如通过 command line tools 或独立安装包),且 `sdk.dir` 路径正确、环境变量 `ANDROID_HOME` / `ANDROID_SDK_ROOT` 也已配置。常见诱因包括:SDK 目录结构不完整(缺少 `platforms/`, `platform-tools/`, `tools/` 等关键子目录);SDK 权限受限(尤其在 Linux/macOS 上非当前用户所有);Android Studio 使用了内置默认路径(如 `~/Library/Android/sdk` 或 `C:\Users\\AppData\Local\Android\Sdk`),却未将实际 SDK 复制/软链至此;或新版 AS(Iguana+)强制要求通过 SDK Manager 初始化,拒绝识别预装的“裸”SDK。该问题导致无法创建项目、编译失败、AVD 不可用,是开发者首次配置环境或迁移 SDK 时高频卡点。
  • 写回答

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, dmtracedump
    tools/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="...">

    解决路径映射失配的两种权威方式:

    1. 软链接法(推荐):将真实 SDK 目录软链至 AS 默认路径
      ln -sf /opt/android-sdk ~/Library/Android/sdk(macOS)
      mklink /D "%LOCALAPPDATA%\Android\Sdk" "D:\android-sdk"(Windows CMD)
    2. 重置配置法:关闭 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,完成可信注册。

    ```
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 2月5日
  • 创建了问题 2月4日