Avalonia跨平台基础Android应用构建失败求助
Avalonia + .NET Android 构建运行异常排查方案
问题概述
使用.NET 7.0.400在VS Code中基于Avalonia开发Android应用,Hello World项目存在以下异常:
- 按官方文档创建跨平台项目成功,但Android端无法正常构建/运行
- 已安装带.NET、MAUI组件的Visual Studio 2022,执行
dotnet workload install android和dotnet tool install -g Redth.Net.Maui.Check成功,但maui-check执行报错,重试无效 dotnet build可完成但有警告,dotnet run提示文件被占用;Desktop端运行正常- 修复ViewLocator签名、安装Xamarin.AndroidX.Annotation后APK可安装到Android 11真机,但启动崩溃
- 尝试
dotnet clean、切换.NET版本(7.0.306/7.0.400/8.0预览版)无效;杀死.NET进程后出现XA0010(无可用设备)错误
针对性解决步骤
1. 解决dotnet run文件占用问题
- 关闭VS Code及所有关联的.NET进程(包括
dotnet.exe、msbuild.exe),通过任务管理器直接结束 - 执行
dotnet clean后手动删除项目目录下的bin、obj文件夹,再重新执行dotnet build - 检查是否有杀毒软件拦截项目文件,临时关闭实时防护后重试
2. 修复XA0010无可用设备错误
- 真机连接:确保Android设备开启USB调试,并在设备上授权当前电脑的调试权限;执行
adb devices确认设备已被识别,未识别则重新安装对应设备的USB驱动 - 模拟器:确保Android模拟器已启动,且SDK版本与项目目标Android版本匹配;执行
adb kill-server再adb start-server重启ADB服务 - 在VS Code中安装Android Extension Pack插件,自动关联ADB设备,避免设备检测异常
3. 解决APK启动崩溃问题
- 检查
AndroidManifest.xml配置:确认android:name指向正确的Avalonia入口类(默认应为.MainApplication) - 捕获崩溃日志定位问题:执行
adb logcat *:E查看错误详情,常见原因包括Avalonia Android依赖缺失、权限未声明 - 统一Avalonia NuGet包版本:确保项目中
Avalonia、Avalonia.Android等相关包版本一致且适配当前.NET版本;可删除packages.lock.json后重新还原包 - Android 11适配:在
AndroidManifest.xml的application标签中添加android:requestLegacyExternalStorage="true"属性,避免存储权限导致的启动崩溃
4. 修复Workload及maui-check异常
- 卸载重装Android Workload:执行
dotnet workload uninstall android,删除%USERPROFILE%\.dotnet\workloads目录清理缓存后,再执行dotnet workload install android --source https://api.nuget.org/v3/index.json - 验证JDK版本:确保安装的是OpenJDK 11(Avalonia Android要求版本),检查环境变量
JAVA_HOME是否指向正确路径 - 跳过
maui-check直接验证:执行dotnet build -t:Run -f net7.0-android,查看详细错误日志定位具体问题
内容的提问来源于stack exchange,提问作者Jakub Mazur
相关产品推荐
相关产品推荐

