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)中添加:
<runtimeidentifier>linux-arm64</runtimeidentifier>(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-docker或
cpack工具较重,推荐轻量方案:
手动创建
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 依赖——跑起来比想象中快。
