.NET MAUI集成SkiaSharp时抛出System.NotSupportedException等异常求助
.NET 8 MAUI集成SkiaSharp SKLottieView崩溃问题排查与解决
可能的异常原因
- 预览版NuGet包兼容性冲突:你使用的
SkiaSharp.Extended.UI.Maui 3.0.0-preview.7是预览版本,和.NET 8正式版的MAUI runtime可能存在适配问题,预览包的API或初始化逻辑未完全兼容正式版框架。 - Lottie资源配置错误:
Free.json的嵌入方式、文件路径或格式不符合要求,导致SKLottieView加载时触发异常。 - 初始化步骤遗漏或顺序错误:SkiaSharp相关依赖的注册逻辑存在问题,未正确完成初始化。
解决办法
1. 更换稳定版NuGet包
卸载当前预览版包,安装适配.NET 8的稳定版本:
- 打开NuGet包管理器,卸载
SkiaSharp.Extended.UI.Maui(3.0.0-preview.7) - 安装
SkiaSharp.Extended.UI.Maui的最新稳定版(截至当前推荐2.88.6版本,需确保与.NET 8兼容) - 同步更新配套的
SkiaSharp和SkiaSharp.NativeAssets.*包,保持所有SkiaSharp相关包版本一致。
2. 检查Lottie资源配置
- 确保
Free.json的生成操作设置为MauiAsset:右键文件→属性→生成操作选择MauiAsset,复制到输出目录选不复制。 - 验证JSON文件有效性:用Lottie官方预览工具确认文件无损坏,避免因无效JSON导致加载失败。
- 尝试指定完整资源路径:如果直接用文件名加载失败,改用
Source="resource://你的项目命名空间.Free.json"的方式明确指定资源位置。
3. 修正初始化逻辑
确认MauiProgram.cs中的初始化代码顺序正确:
using SkiaSharp.Extended.UI.Maui; var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .UseSkiaSharp() // 确保此调用在UseMauiApp之后 .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); }); return builder.Build();
4. 捕获详细异常信息
如果程序快速崩溃无法获取堆栈,可在App.xaml.cs中添加全局异常捕获:
protected override void OnStart() { AppDomain.CurrentDomain.UnhandledException += (sender, e) => { var exception = e.ExceptionObject as Exception; System.Diagnostics.Debug.WriteLine($"未处理异常:{exception?.Message}\n{exception?.StackTrace}"); }; }
也可以在Visual Studio调试时开启“捕获所有异常”(调试→窗口→异常设置→勾选Common Language Runtime Exceptions),强制程序在抛出异常时中断,获取完整堆栈信息。
内容的提问来源于stack exchange,提问作者Jazz_And_Blues
相关产品推荐
相关产品推荐

