添加DRM启动方式,在VM虚拟机上测试了一下Ubuntu18.04 Server,可以启动
This commit is contained in:
parent
367aa0a386
commit
40d179d4b4
@ -1,7 +1,6 @@
|
||||
using Avalonia;
|
||||
using Avalonia.Controls.ApplicationLifetimes;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Styling;
|
||||
using Semi.Avalonia.Demo.Views;
|
||||
|
||||
namespace Semi.Avalonia.Demo.Desktop;
|
||||
@ -16,9 +15,9 @@ public partial class App : Application
|
||||
public override void OnFrameworkInitializationCompleted()
|
||||
{
|
||||
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
||||
{
|
||||
desktop.MainWindow = new MainWindow();
|
||||
}
|
||||
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleView)
|
||||
singleView.MainView = new MainView();
|
||||
base.OnFrameworkInitializationCompleted();
|
||||
}
|
||||
}
|
@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using Avalonia;
|
||||
using Avalonia;
|
||||
using Avalonia.Dialogs;
|
||||
using Avalonia.Media;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
|
||||
namespace Semi.Avalonia.Demo.Desktop;
|
||||
|
||||
@ -11,8 +13,10 @@ class Program
|
||||
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
|
||||
// yet and stuff might break.
|
||||
[STAThread]
|
||||
public static void Main(string[] args) => BuildAvaloniaApp()
|
||||
.With(new FontManagerOptions
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
var builder = BuildAvaloniaApp();
|
||||
builder.With(new FontManagerOptions
|
||||
{
|
||||
FontFallbacks = new[]
|
||||
{
|
||||
@ -21,8 +25,54 @@ class Program
|
||||
FontFamily = new FontFamily("Microsoft YaHei")
|
||||
}
|
||||
}
|
||||
})
|
||||
.StartWithClassicDesktopLifetime(args);
|
||||
});
|
||||
|
||||
//DRM启动步骤(Ubuntu18.04Server版本 虚拟机测试OK)
|
||||
//官方文档:https://docs.avaloniaui.net/docs/next/guides/platforms/rpi/running-on-raspbian-lite-via-drm
|
||||
|
||||
//1.Linux端运行命令
|
||||
//sudo apt update
|
||||
//sudo apt upgrade
|
||||
//sudo reboot
|
||||
//sudo apt - get install libgbm1 libgl1 - mesa - dri libegl1 - mesa libinput10
|
||||
|
||||
//2.安装测试工具测试(出现一个彩色立方体说明环境安装完成)
|
||||
//sudo apt-get install kmscube
|
||||
//sudo kmscube
|
||||
|
||||
//3.添加StartLinuxDrm代码
|
||||
|
||||
//4.发布程序,复制到Linux系统(安装.net,怎么运行这些省略)
|
||||
//发布文件不要裁剪,如果裁剪会报错
|
||||
//Unhandled exception. Avalonia.Markup.Xaml.XamlLoadException: No precompiled XAML found for avares
|
||||
//://Semi.Avalonia/Themes/Light/Light.axaml (baseUri: avares://Semi.Avalonia/Themes/Index.axaml), m
|
||||
//ake sure to specify x:Class and include your XAML file as AvaloniaResource
|
||||
|
||||
//5.运行
|
||||
|
||||
//运行报错点:
|
||||
//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: liblibSkiaSharp: cannot open shared object file: No such file or directory
|
||||
//at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
|
||||
//at SkiaSharp.SKImageInfo..cctor()
|
||||
|
||||
//解决方法:
|
||||
//Linux命令行安装一下 apt-get install -y libfontconfig1
|
||||
//网址:https://github.com/mono/SkiaSharp/issues/509
|
||||
|
||||
if (args.Contains("--drm"))
|
||||
{
|
||||
SilenceConsole();
|
||||
builder.StartLinuxDrm(args: args, card: "/dev/dri/card0", scaling: 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.StartWithClassicDesktopLifetime(args);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Avalonia configuration, don't remove; also used by visual designer.
|
||||
public static AppBuilder BuildAvaloniaApp()
|
||||
@ -31,4 +81,15 @@ class Program
|
||||
.UsePlatformDetect()
|
||||
.With(new Win32PlatformOptions())
|
||||
.LogToTrace();
|
||||
|
||||
private static void SilenceConsole()
|
||||
{
|
||||
new Thread(() =>
|
||||
{
|
||||
Console.CursorVisible = false;
|
||||
while (true)
|
||||
Console.ReadKey(true);
|
||||
})
|
||||
{ IsBackground = true }.Start();
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,7 @@
|
||||
<PackageReference Include="Avalonia.Desktop" Version="$(AvaloniaVersion)" />
|
||||
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
|
||||
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)" />
|
||||
<PackageReference Include="Avalonia.LinuxFramebuffer" Version="11.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
Loading…
x
Reference in New Issue
Block a user