.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
相关产品推荐
相关产品推荐

