You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 MAUI安卓启动报错 找不到mono_opt_aot_lazy_assembly_load符号

问题原因

报错java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "mono_opt_aot_lazy_assembly_load"是Mono安卓运行时原生库版本不匹配导致的。
你当前使用的Visual Studio 2022 17.3.0 Preview 1.1是早期预览版本,自带的Xamarin.Android组件和.NET 6 Android工作负载的Mono工具链存在已知兼容性问题:打包到32位ARM架构(你的小米M2006C3MNG为arm32架构)安装包中的libmonodroid.so依赖的Mono AOT函数符号,和实际打包进APK的Mono运行时库不匹配,应用启动加载原生库时直接触发崩溃。

解决方法

按优先级从高到低尝试以下方案:

方案1:更换为稳定版Visual Studio(推荐,可彻底解决问题)

  • 卸载当前17.3 Preview 1.1版本,安装Visual Studio 2022 17.2以上稳定通道版本,不要用早期预览版进行MAUI项目开发。
  • 安装完成后打开Visual Studio Installer,勾选「.NET 多平台应用 UI 开发」工作负载完成安装,之后打开命令提示符执行以下命令修复.NET工作负载:
dotnet workload repair
dotnet workload install android
  • 删除项目下的bin、obj文件夹,手动卸载小米设备上已经安装的旧版应用,重新编译部署即可。

方案2:临时关闭AOT编译规避问题(仅适合必须使用当前预览版的场景)

  • 右键项目选择「编辑项目文件」,在针对安卓平台的属性组中添加配置关闭AOT编译:
<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0-android'">
  <RunAOTCompilation>false</RunAOTCompilation>
  <AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
</PropertyGroup>
  • 保存配置后清理解决方案,卸载设备上的旧应用,重新编译部署。

方案3:更新预览版工作负载到匹配版本

如果要继续使用当前预览版VS,执行以下命令将.NET安卓工作负载更新到对应预览版本,修复版本不匹配问题:

dotnet workload update --include-previews

更新完成后重启Visual Studio,进入「工具-选项-Xamarin-Android设置」,调试阶段勾选「使用共享Mono运行时」,清理项目后重新部署。

额外排查点
  • 每次重新部署前务必手动卸载设备上的旧版应用,避免残留的旧版本原生so库被系统复用,导致问题反复出现。
  • 统一项目中Microsoft相关NuGet包的版本,你当前引用的Microsoft.Extensions.Http、Microsoft.AspNetCore.Components.WebAssembly.Authentication版本不一致,建议全部升级到6.0.5以上版本,减少程序集加载冲突风险。

内容的提问来源于stack exchange,提问作者user18153346

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 05:18:25