Avalonia怎么在ARM架构的设备上运行 Avalonia for ARM教程

Avalonia 应用可在 ARM 设备(如树莓派、Jetson)直接运行,需确保安装匹配的 .NET 8 ARM64 运行时,构建时指定 linux-arm64,发布命令为 dotnet publish -r linux-arm64 -c Release --self-contained false,部署时安装 GTK 等依赖并赋执行权限即可。

Avalonia 本身是跨平台的,原生支持 ARM 架构(包括 ARM64 和 ARM32),只要目标系统有对应 .NET 运行时,就能直接运行。关键不在 Avalonia 框架本身,而在于 .NET SDK/运行时支持打包部署方式 是否适配 ARM 环境。

确认目标 ARM 系统支持的 .NET 版本

Ubuntu on ARM(如树莓派 4/5、RK3588 板、NVIDIA Jetson)通常使用 ARM64(aarch64) 架构。需确保:

  • 目标设备已安装 .NET 6.0 或更高版本的 ARM64 运行时(推荐 .NET 8 LTS)
  • 开发机(Windows/macOS)用的是同版本 SDK,避免框架不兼容
  • 检查命令:dotnet --list-runtimes(在 ARM 设备上运行)应看到类似 Microsoft.NETCore.App 8.0.x [/usr/share/dotnet/shared/Microsoft.NETCore.App]

构建适用于 ARM 的 Avalonia 应用

不要依赖默认的“任意 CPU”构建——必须显式指定运行时标识符(RID):

  • 在项目文件(.csproj)中添加:
    linux-arm64(Ubuntu/Debian ARM64)
    linux-arm(仅限旧版 ARM32,已较少使用)
  • 命令行发布(推荐):
    dotnet publish -r linux-arm64 -c Release --self-contained false
    若要免安装 .NET 运行时,改用 --self-contained true(体积大但便携)
  • 发布后输出目录(如 bin/Release/net8.0/linux-arm64/publish/)里的可执行文件,就是能在 ARM 设备上直接运行的程序

在 Ubuntu ARM 设备上部署和运行

以树莓派 5(Ubuntu 24.04 Server ARM64)为例:

  • publish 文件夹整体复制到设备(如用 scp 或共享文件夹)
  • 赋予执行权限:chmod +x YourApp
  • 安装必要依赖(Ubuntu):
    sudo apt update && sudo apt install libgtk-3-0 libayatana-appindicator3-1 libnotify4 libglib2.0-0
  • 首次运行可能提示缺少字体,可装默认字体:
    sudo apt install fonts-dejavu-core
  • 运行:./YourApp(注意:不是 dotnet YourApp.dll,除非你没 self-contained)

打包成 deb 安装包(可选,适合

批量分发)

deb 包能自动处理依赖和桌面集成(图标、启动器):

  • 使用 dotnet-dockercpack 工具较重,推荐轻量方案:
    手动创建 DEBIAN/control,把 publish 内容放进 /opt/yourapp,加 desktop 文件到 /usr/share/applications/
  • 更简单:用社区工具 dotnetCampus.DeployTool 或自定义脚本生成 deb
  • 验证 deb:dpkg-deb --info yourapp_1.0_arm64.deb,安装:sudo dpkg -i yourapp_1.0_arm64.deb

基本上就这些。不需要改代码,也不用重写 UI,Avalonia 的 XAML 和 MVVM 在 ARM 上完全一致。重点就是选对 RID、装对运行时、补全 GTK 依赖——跑起来比想象中快。