Avalonia 12正式发布:蓄势待发,迎接全新未来

张开发
2026/4/9 19:26:30 15 分钟阅读

分享文章

Avalonia 12正式发布:蓄势待发,迎接全新未来
距离我们发布 Avalonia 11.0 已经过去了 1007 天。在此期间我们推出了 54 次更新NuGet 下载量突破 930 万次见证了 Avalonia 成长为最主流的跨平台.NET UI 框架。仅去年一年全球就有 210 万个独立项目使用 Avalonia 完成了 1.22 亿次构建。简而言之Avalonia 已成为跨平台.NET 开发的首选框架。今天我们正式发布 Avalonia 12。我们的目标是打造 Avalonia 历史上最扎实的基础版本而我们完美达成了这一目标。Avalonia 12.0 的设计理念我想开诚布公地说明Avalonia 12.0 是什么以及我们刻意没有让它成为什么。Avalonia 12 是一次对框架底层基石的战略性投入核心聚焦于性能、稳定性和平台成熟度。我们深耕了那些 “看似枯燥” 的基础工作目的是让后续所有版本的发布速度更快同时能在这个坚实的底座上快速叠加真正令人兴奋的新特性。我们为未来 18-24 个月的完整路线图打下了基础。并非每个大版本都需要追求噱头式的功能爆发。框架历史上最重要的工作往往是那些能让未来两年的开发交付效率大幅提升的底层建设。而这正是 12.0 版本的核心价值。当然这并不意味着我们没有带来任何激动人心的新东西桌面、嵌入式、移动端 —— 全平台一等体验Avalonia 早已凭借出色的表现成为构建桌面应用的最佳跨平台.NET UI 框架。如果你的目标是 Windows、macOS 和 Linux它无疑是最优选择。但在移动开发领域过去的普遍认知是需要另寻他法。而 Avalonia 12.0 正在彻底改变这一现状。Avalonia 12 在 Android 平台实现了3 倍性能提升引入了原生调度器实现针对平台 GPU 和 CPU 做了专项优化还推出了一套专为移动交互模式设计的完整页面导航系统。如今它已成为移动优先应用开发中极具竞争力的选择。我们为.NET MAUI 开发 Avalonia 后端的经验也让我们清晰地看到了移动平台最关键的功能缺口而 Avalonia 12 已经全部补齐。再加上我们与谷歌 Flutter 团队合作将 Impeller 渲染引擎引入.NET 生态Avalonia 与其他所有.NET 跨平台方案之间的差距只会越来越大。Avalonia 从诞生之初就采用了 “一次编写处处一致” 的设计理念统一的 XAML 语法、统一的渲染管线、统一的代码库。我们的自绘 UI 方案并非临时转向而是经过了十年打磨在数千个生产级应用中久经考验。12.0 版本将所有资源重新投入到这个核心基础上让它在所有目标平台上都变得更快、更稳定、更强大。桌面、嵌入式、移动平台无需任何妥协。性能提升用数据说话在复杂视觉场景下Avalonia 12 的帧率最高提升了1867%接近原来的 20 倍。我们使用包含 35 万个独立视觉元素的场景进行了基准测试。而带来这一飞跃的渲染子系统优化将惠及所有 Avalonia 应用而非仅适用于极端场景。但基准数据只能说明一部分问题。GitHub 用户 LaurentInSeattle 在测试候选版本后给出了这样的反馈所有内容的加载速度都明显变快了。应用更 “丝滑”、响应更及时。内存占用略有下降垃圾回收的运行次数也减少了。空闲时不再有大约 0.5% 的 CPU 占用。所有元素的绘制速度都显著提升用鼠标拾取和拖拽对象的体验更是有了质的飞跃底层的优化工作覆盖了方方面面我们在 PresentationSource 中缓存了渲染缩放值避免重复查询当视觉元素不可见时完全禁用动画处理将默认窗口图标的加载延迟到窗口显示时再执行彻底重构了合成器带来了 1867% 的渲染吞吐量提升。此外我们还默认启用了编译绑定大多数应用无需修改一行代码就能获得绑定性能的提升。更快的渲染意味着你的应用可以在更低配置的硬件上运行降低部署成本更低的空闲 CPU 占用意味着更长的电池续航更好的绑定性能则让 UI 无需架构调整就能变得更灵敏。升级耗时数小时而非数天一位 Discord 用户在体验预览版 1 后这样总结迁移体验必须夸一句12.0 预览版 1 在我的首次测试中表现非常好。只需要做少量修改主要是数据验证部分的变更然后手动打补丁适配 IconPacks.Avalonia 和 AvaloniaEdit之后一切就正常运行了。我们在决定是否引入破坏性变更时极其审慎。本次变更主要包括数据验证处理移至基类 Control这是一次整体改进但你会注意到这个变化、为保持一致性进行的少量重命名例如 SystemDecorations 改为 WindowDecorations以及最终移除了一些已废弃的 API。但构建 Avalonia 应用的核心方式没有任何改变。对于企业团队而言这一点比任何单一功能都更重要。一次能在一个迭代内完成、能通过现有测试套件验证、能放心上线的升级才是值得长期投入的框架与那些每次大版本升级都变成技术负债的框架之间的本质区别。Android 平台性能提升三倍Android 平台的性能提升值得单独拿出来说因为数据实在惊人启用 NativeAOT 后启动时间从 1960ms 降至 460ms提升 4 倍滚动帧率从 42FPS 提升至 120FPS动画稳定锁定 60FPS空闲 CPU 占用从 0.20% 降至不足 0.01%降低 20 倍 —— 这意味着应用一旦停止交互就几乎不会消耗电量这些提升并非来自某个单一的 “银弹”。我们基于 Looper 和 MessageQueue 为 Android 实现了原生的 IDispatcherImpl让线程行为终于符合平台预期针对帧超时的情况对 CPU 和 GPU 利用率做了定向优化移除了那些只会增加延迟却毫无益处的 OpenGL 同步调用同时全面优化了表面重建、恢复后的安全区域内边距处理以及围绕 AvaloniaActivity 的整个应用模型。最终结果是Android 平台上的 Avalonia 现在已成为性能敏感型应用的真正生产级平台。过去那些迫使团队做出不必要框架妥协的差距已经被彻底抹平。Linux 无障碍支持.NET 生态先行者Avalonia 12.0 是首个推出原生 Linux 无障碍后端的.NET UI 框架。没有任何其他.NET 框架提供 Linux 平台的原生无障碍支持。我们实现了 AT-SPI2 后端这意味着 Linux 上的 Avalonia 应用现在可以通过 Linux 桌面生态依赖的标准基础设施与屏幕阅读器和辅助技术完美交互。对于需要在 Linux 上部署到政府、医疗、教育或任何受监管环境的组织来说无障碍支持是采购的硬性要求。而 Avalonia 现在是唯一能满足这一要求的.NET 框架。我们还为验证错误添加了自动化支持并为汉堡菜单等控件增加了自动化地标将无障碍支持从基础的屏幕阅读器功能拓展到了结构化导航领域。导航控件无需再自行从零搭建Avalonia 12.0 内置了完整的页面导航系统通过 TabView 实现 ContentPage、DrawerPage、CarouselPage 和 TabbedPage同时提供了用于页面视觉指示的 PipsPager 控件。支持带循环选择的手势导航在触摸设备上体验自然流畅。页面支持对页眉、页脚、抽屉和图标进行完全模板化自定义。过去每个构建壳式导航的 Avalonia 团队都不得不自己编写和维护这些底层代码。而从 12.0 版本开始这些功能开箱即用并且具备完善的生命周期管理、页面切换时的焦点处理以及与全新可主题化装饰系统的深度集成。专注于打造你的产品而不是重复造导航轮子。WebView 全面开源在推出 Avalonia Accelerate 时WebView 组件属于商业付费功能。而在 12.0 版本中我们将其完全开源。这是一项战略决策。将 WebView 置于付费墙之后会在评估阶段给开发者制造障碍 —— 而这正是我们希望阻力为零的阶段。移除这一门槛后会有更多团队完成评估更多项目投入生产整个生态也会发展得更快。Avalonia WebView 使用各平台原生的网页渲染引擎无需捆绑 Chromium应用体积大幅减小性能与操作系统原生体验完全一致。Wayland 支持底层基础已就绪我们已经完成了支持 Wayland 的底层基础工作目前已开放测试。我们没有在发布首日就向所有用户推送以免在生产环境中出现各种边缘情况。相反我们希望与少数真正有 Wayland 需求的用户合作开展针对性的私有预览。如果你的团队正在默认使用 Wayland 合成器的现代 Linux 发行版上部署 Avalonia 应用请与我们联系。我们正在寻找合作伙伴在正式全面可用之前针对真实场景验证我们的实现。可主题化客户端窗口装饰Avalonia 12.0 引入了可主题化的客户端窗口装饰并提供了无需应用主动开启的强制客户端装饰模式。你可以自定义窗口标题栏的样式暴露平台允许的标题栏按钮操作打造既符合各平台原生规范、又具备个性化的窗口体验。调度器全面优化Avalonia 12.0 新增了Dispatcher.CurrentDispatcher、Dispatcher.FromThread和AvaloniaObject.Dispatcher让线程模型更贴近 WPF 开发者的使用习惯同时保持了完全的跨平台性。我们还添加了Dispatcher.Yield和Dispatcher.Resume用于细粒度的消息处理控制提供了显式的后台处理支持并为Dispatcher.InvokeAsync实现了正确的执行上下文捕获。焦点管理全新重构Avalonia 12.0 对焦点管理进行了全面重构。现在你可以在焦点变更发生前取消它全新的焦点遍历 API 让你能完全控制键盘导航顺序FocusManager 也已向开发者完全开放。同时我们修复了一系列长期存在的 bug核心的 GotFocus 和 LostFocus 事件处理不会再被跳过触摸和笔输入的焦点变更会正确延迟到释放时才触发当焦点被取消或重定向时FocusManager.FocusedElement 会返回正确的值。各平台专项优化Avalonia.iOS 现已启用 Mac Catalyst 支持实现 iOS 场景代理适配现代应用生命周期管理。macOS 平台新增NativeDock.Menu API支持在程序坞图标添加菜单项修复 Metal 渲染清理问题校正无障碍角色定义。Windows 平台阻止 DXGI 拦截 AltEnter 与 PrintScreen 快捷键新增 WinForms 消息过滤器优化混合应用的互操作性。更精简的代码库技术债务即是业务风险。Avalonia 12.0 对此高度重视。我们将目标框架定为.NET 10 与 SkiaSharp 3.0几乎所有项目移除 netstandard2.0 支持停用 Direct2D1终止 Tizen 支持移除 Avalonia.Browser.Blazor并彻底删除 BinaryFormatter 以强化安全性。我们启用 “警告视为错误” 机制接入中央包管理系统在测试套件与原生层全面启用可空注解并将 JavaScript 构建从 Node.js 切换至独立运行的 Bun。我们合并了冗余的内部接口移除未使用的类与方法将仅内部使用的类型严格设为非公开。更精简、更整洁的代码库意味着更少的漏洞、更快的构建速度、更便捷的社区贡献以及所有基于 Avalonia 开发的项目更低的长期维护成本。数百项漏洞修复本次版本覆盖所有平台与子系统修复了数百个独立漏洞包括 ListBox 与 ItemsControl 的虚拟化边缘问题、macOS 的 Metal 渲染清理问题、Linux 下 X11 INCR 传输的剪贴板处理、Android 界面重建与存储查询、iOS 输入处理、字体粗细与拉伸匹配、RTL内容镜像、菜单内存泄漏等。每一项修复都意味着开发者不会再遇到相关生产问题用户不会遭遇功能回退无需提交技术支持工单。更高的稳定性直接降低运维风险减少深夜紧急处理故障的情况。团队壮大开发提速发布 Avalonia 11.0 时我们的团队规模还很小。得益于 Devolutions 为期三年的赞助以及产品收入的持续增长团队规模已扩大一倍以上。如今Avalonia UI 拥有 19 名成员。更大的团队让我们能够同时推进深度底层优化与直观功能开发。AT-SPI2 无障碍后端、线程模型重构、渲染管线优化 —— 这些都是需要数月持续专注投入的工作。以我们当前的团队规模既能完成这些核心任务又不会耽误功能路线图推进或漏洞修复速度。当我们公布后续规划时我们拥有充足的工程能力去落地实现。文档全面升级Avalonia 的文档篇幅增加了一倍多新增了 125% 的指南覆盖从入门到高级平台特定场景的所有内容。我们在文档中内置了 AI 聊天助手提供上下文感知的解答添加了交互式 XAML 预览器可在浏览器中直接试验控件同时重构了网站结构让导航更快捷、学习路径更清晰。如果你一年前觉得我们的文档还有很多空白现在不妨再回来看看。未来展望Avalonia 12.0 从一开始就定位为基础版本。性能优化、平台成熟度提升、API 清理、导航系统、无障碍基础设施 —— 所有这些工作都为我们未来 18-24 个月的发展奠定了基础。我们在渲染、工具链和平台覆盖方面有着宏伟的计划而 12.0 正是我们执行这些计划的坚实底座。未来几个月我们会公布更多路线图细节。现在欢迎大家升级、测试并向我们反馈你的使用体验。开始使用Avalonia 12.0 现已在 NuGet 上发布。更新你的包引用构建并发布你的应用即可。如果你是 Avalonia 新手安装.NET 模板后就能从单一代码库构建出高性能、视觉一致的应用同时支持 Windows、macOS、Linux、iOS、Android 和 WebAssembly。我们也借本次发布的契机重新梳理了 Avalonia Accelerate 品牌以及我们的商业产品在整个生态中的定位。请访问 https://avaloniaui.net/blog/retiring-accelerate/ 了解详情。1.22 亿次构建。210 万个项目。首个拥有原生 Linux 无障碍支持的.NET 框架。生态中最快的跨平台渲染引擎。桌面、嵌入式、移动全一等公民支持。以小时为单位的升级路径。Avalonia 不是 “正在成为” 跨平台.NET 的标准 —— 它已经是了。感谢每一位贡献者、每一位 bug 报告者以及每一位测试了预览版和候选版的社区成员。

更多文章