SuperAPI AI 工具集

avalonia-app-development

编程与开发

查看项目

更新于 11-03 17:15

技能介绍

用途:该技能面向 Avalonia 应用的结构搭建与启动配置,帮助开发者正确组织 Program.cs、App.axaml/App.axaml.cs、资源字典与多平台项目,并处理不同平台的应用生命周期。

主要能力:

  • 入口与启动:Program.cs 中通过 BuildAvaloniaApp() 构建 AppBuilder,示例使用 UsePlatformDetect()、WithInterFont()、LogToTrace()。12.0+ 若显式 UseSkia() 需同时 UseHarfBuzz(),否则启动抛出 No text shaping system configured。
  • 应用根结构:App.axaml 定义 RequestedThemeVariant、DataTemplates、Styles(FluentTheme)与 Resources;App.axaml.cs 在 Initialize() 中调用 AvaloniaXamlLoader.Load(this)。
  • 生命周期分支:Classic Desktop 使用 IClassicDesktopStyleApplicationLifetime(Windows/macOS/Linux);Android 12.0+ 使用 IActivityApplicationLifetime(MainViewFactory);iOS、Browser(以及 11.x 的 Android)使用 ISingleViewApplicationLifetime;Headless 测试无生命周期。需先检查 IActivityApplicationLifetime,再检查 ISingleViewApplicationLifetime。
  • Android 入口:12.0+ 示例使用 AvaloniaMainActivity 与 AvaloniaAndroidApplication<TApp>;11.x 使用 AvaloniaMainActivity<App> 并在 activity 中重写 CustomizeAppBuilder。
  • 资源字典:可独立定义 Color、SolidColorBrush、sys:Double 等资源,通过 ResourceInclude 以 avares:// 路径合并。StaticResource 仅在加载时解析一次,性能更快;DynamicResource 每次访问解析,支持运行时变化与主题变体。
  • 资源文件:在 .csproj 中以 AvaloniaResource Include="Assets/**" 引入,通过 avares://MyApp/Assets/... 访问。
  • 项目结构:示例包含桌面主项目、可选 MyApp.Mobile(iOS/Android)、MyApp.Browser(WASM)与共享 MyApp.Core。
  • 社区库与工具:列举依赖注入/托管(Lemon.Hosting.Avaloniaui、Prism.Avalonia、AvaloniaInside.Shell)、热重载与开发工具(HotAvalonia、Live.Avalonia、Avant Garde、DevTools for Avalonia)、本地化(Echoes)以及 ShowMeTheXaml.Avalonia、Verify.Avalonia、Sortable.Avalonia、AsyncImageLoader.Avalonia 等。

使用方式:按示例搭建 Program.cs 与 App.axaml,根据目标平台选择生命周期并配置入口;按需合并资源字典并区分 StaticResource 与 DynamicResource;多平台项目按桌面、移动、浏览器拆分并共享 Core。

适用场景:新建 Avalonia 跨平台应用、配置启动与主题资源、迁移 Android 12.0+ 入口、组织多平台项目结构、排查资源与生命周期相关问题。

限制:资料中的库、版本与包名仅作示例;具体功能、收费与平台支持以对应项目文档为准,未在资料中给出的细节暂未提供。