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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:57:41