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

.NET MAUI从.NET 8升级到.NET 9后Android模拟器启动报错求助

解决.NET MAUI升级到.NET 9后Android启动报错的方法

1. 调整链接器配置

该报错核心原因是链接器误删了Microsoft.Maui.MauiApplication相关的必要代码,可通过修改链接器规则解决:

  • 打开项目的.csproj文件,添加或更新Android平台的配置:
    <PropertyGroup Condition="'$(TargetFramework)' == 'net9.0-android'">
      <AndroidLinkMode>SdkOnly</AndroidLinkMode>
      <!-- 若SdkOnly仍有问题,可临时设为None排查,但发布时需改回SdkOnly以保证包体积 -->
      <!-- <AndroidLinkMode>None</AndroidLinkMode> -->
      <AndroidEnableProfiledAot>False</AndroidEnableProfiledAot>
    </PropertyGroup>
    
  • 也可通过项目属性的Android选项,将「链接器行为」设置为「仅链接SDK程序集」。

2. 校验自定义MauiApplication实现

若项目有自定义的MauiApplication子类,需确保实现规范:

  • 检查Platforms/Android/MainApplication.cs,确认代码结构如下:
    namespace YourAppNamespace;
    
    [Application]
    public class MainApplication : MauiApplication
    {
        public MainApplication(IntPtr handle, JniHandleOwnership ownership)
            : base(handle, ownership)
        {
        }
    
        protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
    }
    
  • 确保[Application]特性未遗漏,且CreateMauiApp()正确调用MauiProgram中的方法。

3. 临时禁用AOT编译

.NET 9的AOT编译可能存在兼容性问题,可先禁用排查:

  • 在.csproj中添加配置:
    <PropertyGroup Condition="'$(TargetFramework)' == 'net9.0-android'">
      <RunAOTCompilation>False</RunAOTCompilation>
    </PropertyGroup>
    
  • 清理重建项目后重新部署测试。

4. 核对AndroidManifest.xml配置

确保清单文件中的应用类指向正确:

  • 确认<application>标签的android:name属性指向自定义的MainApplication,示例:
    <application android:name=".MainApplication" ...>
    
  • 避免直接使用Microsoft.Maui.MauiApplication作为android:name的值,防止链接器误删相关代码。

5. 重置模拟器缓存

模拟器缓存异常也可能导致启动失败:

  • 打开Android Device Manager,选中目标模拟器,点击「Wipe Data」清除数据,重启模拟器后重新部署应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 11:43:13