Visual Studio 2019安卓设备列表不显示 需切换JDK路径才能加载
问题描述
使用Visual Studio 2019开发Xamarin安卓应用、部署项目到真机/模拟器时遇到设备识别异常:
- 启动VS2019后,顶部运行目标设备下拉列表仅显示「Android Emulator」选项,既不展示已创建的虚拟设备,也不识别已连接的真机设备
- 点击该选项会直接跳转至Android Device Manager页面,无法选择目标设备运行项目
- 唯一临时解决方法:进入
Tools -> Options -> Xamarin -> Android Settings页面修改JDK路径时,设备列表才会触发刷新、正常加载所有可用设备。例如当前JDK路径配置为"C:\Program Files\Java\jdk1.8.0_311"时,将其切换为C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot(或反向切换)即可看到设备,该操作每次启动VS2019都需要重复执行。
已尝试的无效排查操作:
- 开启真机USB调试(虚拟设备同样无法正常显示,可排除该因素影响)
- 安装、更换多个版本的JDK
- 右键安卓项目进入Application配置页,修改「Compile using Android version:」选项:当前使用Android 9.0 (Pie),尝试切换为8.1、10.0、11.0版本均无效
- 调整系统及用户环境变量配置:
- 用户级环境变量:
JAVA_HOME:C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot- Path中Java相关条目:
C:\Program Files\Java\jdk1.8.0_311\bin、;%JAVA_HOME%\bin - Path其余条目:
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps、C:\Users\myUser\AppData\Local\Programs\Microsoft VS Code\bin、C:\myfolder\PHP、C:\Users\myUser\AppData\Roaming\npm、%USERPROFILE%\.dotnet\tools
- 系统级环境变量:
JAVA_HOME:C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot- Path包含条目:
C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot\bin
尝试互换两个JDK的环境变量配置、删除Oracle官方JDK仅保留Eclipse基金会JDK后,问题仍然存在,每次启动VS2019都需要手动切换JDK路径才能正常识别设备。
- 用户级环境变量:
解决方案
按顺序执行以下操作,每步完成后重启Visual Studio 2019验证效果:
1. 清理Xamarin本地损坏缓存
该问题核心原因是VS启动时Xamarin的Android设备枚举模块读取JDK配置缓存失效,手动切换JDK路径本质是强制触发缓存重载,直接清理损坏缓存即可根治:
- 关闭所有运行中的Visual Studio进程
- 在文件资源管理器地址栏输入
%LOCALAPPDATA%\Xamarin\回车进入对应目录 - 删除目录下所有
.cache后缀文件,同时进入Mono for Android子目录,删除整个DeviceCache文件夹 - 以管理员身份启动VS2019,进入
Tools -> Options -> Xamarin -> Android Settings,固定选择VS默认自带的微软OpenJDK作为JDK路径(默认路径为C:\Program Files\Microsoft\jdk-11.0.xxx-hotspot,Xamarin.Android对该版本JDK兼容性最优,不建议混用Oracle JDK、Eclipse Adoptium JDK作为默认配置) - 保存设置后关闭VS,重新启动检查设备列表是否正常加载。
2. 修复Android目录权限配置
如果清理缓存后问题复现,检查SDK和模拟器目录权限:
- 从
Tools -> Options -> Xamarin -> Android Settings页面复制Android SDK Location的完整路径 - 右键对应SDK文件夹,打开「属性-安全」面板,给当前登录Windows用户、
Authenticated Users用户组授予完全控制权限 - 打开Android Device Manager,对所有已创建的虚拟设备右键选择「修复」,等待镜像校验完成。
3. 关闭Xamarin扩展异步加载
VS2019的扩展异步加载功能存在已知bug,会导致设备枚举服务在启动阶段未完成初始化:
- 进入
Tools -> Options -> Environment -> Extensions设置页 - 取消勾选启动时异步加载扩展以优化性能选项
- 保存设置后重启VS。
4. 清理环境变量多JDK冲突
当前环境变量存在多JDK路径混杂问题,会导致Xamarin调用java、adb进程时版本不匹配:
- 打开系统环境变量配置面板,删除用户级Path下的
C:\Program Files\Java\jdk1.8.0_311\bin条目 - 统一系统级、用户级的
JAVA_HOME变量值,指向同一个JDK路径,Path中仅保留%JAVA_HOME%\bin这一项Java相关路径,删除其他所有JDK的bin目录配置 - 配置完成后打开命令提示符,依次执行
java -version、adb version,确认输出的路径与你配置的JDK、SDK路径一致。
内容的提问来源于stack exchange,提问作者techie
相关产品推荐
相关产品推荐

