最近我给自己买了一个PinePhone,并决定玩.NET Core 5,因为它的跨平台特性,所以我选择使用Avalonia。我把这个应用程序部署到我的手机上,并遇到了这个错误:
Unhandled exception. System.TypeInitializationException: The type initializer for 'SkiaSharp.SKImageInfo' threw an exception.
---> System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: Error loading shared library liblibSkiaSharp: No such file or directory
at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
at SkiaSharp.SKImageInfo..cctor()
--- End of inner exception stack trace ---
at Avalonia.Skia.PlatformRenderInterface..ctor(ISkiaGpu skiaGpu, Nullable`1 maxResourceBytes)
at Avalonia.Skia.SkiaPlatform.Initialize(SkiaOptions options)
at Avalonia.SkiaApplicationExtensions.<>c__0`1.<UseSkia>b__0_0()
at Avalonia.Controls.AppBuilderBase`1.Setup()
at Avalonia.Controls.AppBuilderBase`1.SetupWithLifetime(IApplicationLifetime lifetime)
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode)
at DummyCounter.Program.Main(String[] args)
Aborted
奇怪的是,libSkiaSharp.so
库文件与可执行文件位于同一个文件夹中。该文件夹是通过下面的dotnet publish
命令创建的:
dotnet publish -r alpine-arm64 DummyCounter -o ./publish
我尝试了几种不同的方法,将架构更改为LinuxMUSL-arm64,将应用程序部署为自包含和/或单个文件,但我仍然得到了相同的结果。以前有人见过这样的东西吗?
发布于 2021-02-08 20:07:58
ARM64 Linux支持是开箱即用的。然而,ARM64阿尔卑斯Linux需要定制SkiaSharp构建,因为与其他Linux发行版不同,它使用的是一个非标准的libc版本。
因此,要么切换到更主流的东西,要么遵循构建SkiaSharp - https://github.com/mono/SkiaSharp/wiki/Building-on-Linux的说明。
https://stackoverflow.com/questions/66108147
复制相似问题