From android-sdk-setup
在 Windows 上不依赖 Android Studio 安装 Android SDK + JDK 环境。当用户遇到 ERR_SDK_NOT_FOUND、Android SDK 找不到、cap run android 失败、或需要配通安卓构建环境时使用此技能。也适用于用户明确说"装 SDK"、"配安卓环境"、"不用 Android Studio 跑 Android 项目"等场景。
How this skill is triggered — by the user, by Claude, or both
Slash command
/android-sdk-setup:android-sdk-setupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
在 Windows 上安装 JDK + Android SDK 命令行工具,无需安装 Android Studio。
在 Windows 上安装 JDK + Android SDK 命令行工具,无需安装 Android Studio。
经用户同意后,检查当前环境:
java -version
echo $env:JAVA_HOME
echo $env:ANDROID_HOME
echo $env:ANDROID_SDK_ROOT
Get-PSDrive -PSProvider FileSystem
if ($env:ANDROID_HOME) { Test-Path $env:ANDROID_HOME; Get-ChildItem $env:ANDROID_HOME -ErrorAction SilentlyContinue }
如果 npx cap run android 报 ERR_SDK_NOT_FOUND,说明 ANDROID_HOME 未设置或路径无效。
隐私与用户确认原则:
JAVA_HOME、ANDROID_HOME、ANDROID_SDK_ROOT、磁盘剩余空间、项目路径和已有 SDK 目录推荐安装位置,但必须让用户决定是否使用。在执行任何检查或安装命令前,向用户确认:
读取项目的 android/variables.gradle 获取 compileSdkVersion,同时查看 android/build.gradle(或 capacitor.build.gradle)中的 JavaVersion.VERSION_XX 确定 JDK 版本要求。
VERSION_21 → 需要 JDK 21platforms;android-XX根据前置检查结果向用户推荐目录,例如:
JAVA_HOME 且版本满足项目要求,推荐复用该 JDK。ANDROID_HOME 或 ANDROID_SDK_ROOT,推荐复用该 Android SDK。<用户确认的根目录>\jdk 和 <用户确认的根目录>\android-sdk。不要在未确认的情况下默认使用 D:\SDK、用户目录、项目目录或任何其他路径。
后续命令中的路径都用占位符表示:
<JDK_DIR>:用户确认的 JDK 安装目录<ANDROID_SDK_DIR>:用户确认的 Android SDK 安装目录<DOWNLOAD_DIR>:用户确认的临时下载目录用户确认目录和下载权限后,从 Adoptium 下载 JDK(优先 JDK 21,除非项目明确要其他版本):
# 下载(PowerShell)
Invoke-WebRequest -Uri 'https://api.adoptium.net/v3/binary/latest/21/ga/windows/x64/jdk/hotspot/normal/eclipse?project=jdk' -OutFile '<DOWNLOAD_DIR>\jdk.zip'
# 解压
Expand-Archive -Force -LiteralPath '<DOWNLOAD_DIR>\jdk.zip' -DestinationPath '<DOWNLOAD_DIR>\jdk_tmp'
# 整理到目标目录(jdk 解压后有一层版本号子目录,挪到父级)
# 如果目标目录已有内容,必须先询问用户是否覆盖、清空或改用其他目录
Move-Item '<DOWNLOAD_DIR>\jdk_tmp\<jdk-version>\*' '<JDK_DIR>\'
Remove-Item -Recurse -Force '<DOWNLOAD_DIR>\jdk_tmp', '<DOWNLOAD_DIR>\jdk.zip'
验证:<JDK_DIR>\bin\java.exe -version
用户确认 Android SDK 目录和下载权限后,下载 cmdline-tools:
Invoke-WebRequest -Uri 'https://dl.google.com/android/repository/commandlinetools-win-13114758_latest.zip' -OutFile '<DOWNLOAD_DIR>\cmdline-tools.zip'
Expand-Archive -Force -LiteralPath '<DOWNLOAD_DIR>\cmdline-tools.zip' -DestinationPath '<ANDROID_SDK_DIR>\cmdline-tools'
关键:解压后需要将内层目录重命名为 latest:
# 解压后结构为 <ANDROID_SDK_DIR>\cmdline-tools\cmdline-tools\
# 必须移到 <ANDROID_SDK_DIR>\cmdline-tools\latest\
Move-Item '<ANDROID_SDK_DIR>\cmdline-tools\cmdline-tools' '<ANDROID_SDK_DIR>\cmdline-tools\latest'
Remove-Item -Force '<DOWNLOAD_DIR>\cmdline-tools.zip'
先用 --list 确认包名,然后安装:
# 设置临时环境变量供此命令使用
$env:JAVA_HOME='<JDK_DIR>'
$env:ANDROID_SDK_ROOT='<ANDROID_SDK_DIR>'
# 列出可用包(可选)
& '<ANDROID_SDK_DIR>\cmdline-tools\latest\bin\sdkmanager.bat' --sdk_root='<ANDROID_SDK_DIR>' --list
安装(根据 compileSdkVersion 替换版本号)。只有在用户确认接受 Android SDK 许可协议后,才能管道 y:
$env:JAVA_HOME='<JDK_DIR>'
"y" | & '<ANDROID_SDK_DIR>\cmdline-tools\latest\bin\sdkmanager.bat' --sdk_root='<ANDROID_SDK_DIR>' "platforms;android-<compileSdk>" "build-tools;<latest-build-tools>" "platform-tools"
示例(compileSdkVersion=36):
"y" | & '<ANDROID_SDK_DIR>\cmdline-tools\latest\bin\sdkmanager.bat' --sdk_root='<ANDROID_SDK_DIR>' "platforms;android-36" "build-tools;36.1.0" "platform-tools"
修改环境变量前必须再次向用户确认将写入的具体值:
JAVA_HOME=<JDK_DIR>ANDROID_HOME=<ANDROID_SDK_DIR>ANDROID_SDK_ROOT=<ANDROID_SDK_DIR><JDK_DIR>\bin、<ANDROID_SDK_DIR>\platform-tools、<ANDROID_SDK_DIR>\cmdline-tools\latest\bin# JAVA_HOME
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "<JDK_DIR>", "User")
# ANDROID_HOME 和 ANDROID_SDK_ROOT
[System.Environment]::SetEnvironmentVariable("ANDROID_HOME", "<ANDROID_SDK_DIR>", "User")
[System.Environment]::SetEnvironmentVariable("ANDROID_SDK_ROOT", "<ANDROID_SDK_DIR>", "User")
# 更新 PATH(添加到用户 PATH;添加到前面还是后面需要询问用户)
$currentPath = [System.Environment]::GetEnvironmentVariable("PATH", "User")
$entries = @("<JDK_DIR>\bin", "<ANDROID_SDK_DIR>\platform-tools", "<ANDROID_SDK_DIR>\cmdline-tools\latest\bin")
foreach ($e in $entries) {
if ($currentPath -notlike "*$e*") {
$currentPath = "$e;$currentPath"
}
}
[System.Environment]::SetEnvironmentVariable("PATH", $currentPath, "User")
$env:JAVA_HOME='<JDK_DIR>'
$env:ANDROID_HOME='<ANDROID_SDK_DIR>'
$env:PATH="$env:JAVA_HOME\bin;$env:ANDROID_HOME\platform-tools;$env:ANDROID_HOME\cmdline-tools\latest\bin;$env:PATH"
java -version
adb version
Get-ChildItem "$env:ANDROID_HOME\platforms\"
Get-ChildItem "$env:ANDROID_HOME\build-tools\"
然后尝试编译:
$env:JAVA_HOME='<JDK_DIR>'
$env:ANDROID_HOME='<ANDROID_SDK_DIR>'
Set-Location android
.\gradlew compileDebugJavaWithJavac
安装完成后明确告知用户:
cap run android 需要连接真机(USB 调试)或启动模拟器无效的源发行版:21 / source release 21JDK 版本太低,项目要求 JDK 21。下载 JDK 21 替换。
sdkmanager: command not foundsdkmanager 是 Windows .bat 文件,在 Git Bash 中需要用 powershell 或 cmd /c 调用,不能直接执行。
sdkmanager 会提示 Accept? (y/N):。先询问用户是否接受许可协议;用户确认后,再用 "y" | & sdkmanager.bat ... 的方式传入确认。
No valid Android SDK root foundANDROID_HOME 未设置或指向的路径不存在有效的 SDK 目录结构(必须有 platforms/、build-tools/ 等子目录)。
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub yuzhi-jiang/skills --plugin pgsql-setup