必须启用windows虚拟化功能并精准选择工作负载:以管理员身份运行powershell执行dism命令开启virtualmachineplatform和hyper-v,重启后安装“mobile development with .net”工作负载,含maui、android sdk、emulator及ndk r25+,sdk路径须为纯英文且无空格。

Visual Studio 开发移动应用不是“装完就能跑”,关键看你要走哪条技术路径:C# 跨平台(.NET MAUI / Xamarin)、C++ 原生、还是 Unity 游戏。不同路径依赖的组件、SDK 和配置差异很大,装错工作负载或漏掉某项系统功能,Android Emulator 启不动、ndk-build 报错、甚至新建项目都失败,都是常见结果。
必须开启的 Windows 系统功能
所有 Android 开发路径(无论 C# 还是 C++)都依赖虚拟化支持来运行模拟器。不提前启用,后续安装 SDK 或启动 Android Emulator 会直接报错 “HAXM not installed” 或 “Emulator: CPU acceleration status: Disconnected”。
- 以管理员身份运行 PowerShell,执行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart - 再执行:
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart - 重启电脑 —— 这步不能跳,否则
Windows Hypervisor Platform (WHPX)不生效
.NET MAUI 和 Xamarin 的最小安装项
选错工作负载会导致 dotnet workload install maui 失败,或新建项目时没有 .NET MAUI App 模板。VS 安装器里的勾选不是“越多越好”,而是要精准匹配目标框架。
Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。
- 工作负载必须勾选:
Mobile development with .NET - 安装详情里至少要包含:
.NET Multi-platform App UI development (MAUI)、Android SDK setup、Android Emulator、Android NDK (R21+) - 不要只勾
Xamarin而漏掉MAUI—— Xamarin 已被 MAUI 取代,新项目默认用 MAUI;旧 Xamarin 项目迁移需额外处理 - 如果只开发 Android,
iOS SDK和macOS SDK可不装;但一旦勾了MAUI,VS 会提示你安装 Apple 工具链(即使你暂时不用),这是正常行为,可忽略
C++ 移动开发的关键配置点
C++ 路径下最容易卡在 ABI 构建和日志输出上。VS 默认生成的 Dynamic Shared Library (Android) 项目能编译,但不加调试日志根本看不到它是否真的加载进目标进程。
- 项目属性 → 配置属性 → 常规 → 目标平台版本,必须设为已安装的 Android SDK 最高 API Level(如
Android 14.0 (API Level 34)),否则__android_log_print无法链接 - 必须手动添加头文件引用:
#include <android></android>,且预处理器定义里要包含ANDROID - 生成 ARM64 库时,配置管理器里平台必须选
ARM64,不能只靠 x86 模拟器测试 —— 很多真机只认arm64-v8a,armeabi-v7a在 Android 12+ 上已被弃用 -
Android NDK版本建议用 R25 或 R26,R21 虽兼容但缺少对 Clang 15+ 的完整支持,容易在std::filesystem等特性上出错
容易被忽略的权限与路径问题
即使环境全装好,adb devices 找不到设备、Android SDK 路径被识别为无效、或者热重载(Hot Reload)在 MAUI 里不生效,往往是因为权限或路径含空格/中文。
- Android SDK 默认路径是
%USERPROFILE%\AppData\Local\Android\Sdk,如果 VS 安装时改过路径,请确保该目录下有platform-tools(含adb.exe)和platforms(含android-34等文件夹) - 不要把项目放在 OneDrive、iCloud 或带中文/空格的路径下 —— C++ NDK 构建脚本和 MAUI 的 MSBuild 任务对路径敏感,会静默失败
- 首次连接安卓真机调试前,务必打开手机“开发者选项”并启用“USB 调试”,且在弹出授权框时点“允许”;仅插线不授权,
adb devices显示的是?????????? no permissions
真正麻烦的从来不是装多少组件,而是每条路径上的隐式依赖:Hyper-V 关联 WHPX,WHPX 支持影响模拟器启动,模拟器又决定你能否快速验证 UI;NDK 版本影响 C++ 标准库可用性,而标准库又牵扯到你能不能用 std::format 这类现代特性。这些环环相扣,少一环,错误就卡在最不相关的地方。










