Amazon Linux 2023与SkiaSharp兼容性问题求助
Amazon Linux 2023与SkiaSharp兼容性问题求助
各位大佬好!我最近碰到个特别头疼的兼容性问题,折腾好几天没搞定,特意来这儿求助!
先跟大家说下我的项目背景:
- 项目是基于**.NET 6 MVC**开发的,核心用SkiaSharp做图片压缩处理
- 安装的SkiaSharp相关包版本全是
2.88.8:SkiaSharp、SkiaSharp.NativeAssets.Linux、SkiaSharp.NativeAssets.Linux.NoDependencies - 核心压缩方法的代码大概是这样的(部分代码被截断):
public void CompressPicAndDelOrg(string source, string target, decimal maxWidth, int quality, ref string lsReturnbase64) { try { var provider = new FileExtensionContentTypeProvider(); if (!provider.TryGetContentType(source, out string? mimeType)) mimeType = "application/octet-stream"; using (var file = System.IO.File.OpenRead(source)) using (var fs = new SKManagedStream(file)) using (var original = SKBitmap.Decode(fs)) { // 图片压缩逻辑(部分代码省略) } } catch (Exception ex) { // 异常处理逻辑 } }
现在的问题是:这个项目在VMware里的Ubuntu 22.04上跑完全正常,图片压缩功能毫无问题,但部署到Amazon Linux 2023之后,一执行图片压缩代码就直接报错:
The type initializer for 'SkiaSharp.SKAbstractManagedStream' threw an exception
我自己查了文件路径、运行权限这些基础项,都没问题,但就是卡在这里。想请教下有没有大佬碰到过类似情况?或者有什么排查和解决的思路?
我自己也整理了几个可能的方向,也想请大家帮忙把关:
- 补全系统依赖库:Amazon Linux 2023的系统库版本和Ubuntu 22.04差异不小,会不会是SkiaSharp依赖的底层库缺失了?比如
libfontconfig、libfreetype这些,打算用这条命令试试安装:sudo dnf install fontconfig freetype harfbuzz - 调整NativeAssets包:会不会是
SkiaSharp.NativeAssets.Linux和Amazon Linux 2023不兼容?打算移除这个包,只保留SkiaSharp.NativeAssets.Linux.NoDependencies——毕竟这个包自带了独立编译的依赖库,不依赖系统自带的 - 升级SkiaSharp版本:现在用的2.88.8是比较旧的版本了,说不定新版本修复了对Amazon Linux 2023的兼容性问题,打算升级到最新稳定版试试
- 深挖内部异常:这个类型初始化异常一般都有嵌套的内部异常,我打算在catch块里把内部异常的详细信息打出来,这样应该能精准定位到底是哪个环节炸了
备注:内容来源于stack exchange,提问作者TS MP
相关产品推荐
相关产品推荐

