用途:指导在 dotnet/maui-labs 仓库内为新目标平台创建完整 .NET MAUI 后端,也适用于为已有后端实现或修复控件处理器、添加 Essentials 服务、配置构建目标与 NuGet 打包、搭建 dotnet new 模板,以及用 MAUI DevFlow 调试渲染问题、审计处理器覆盖度。
主要能力与流程:分阶段推进。阶段0研究目标平台的原生视图基类、布局应用方式、主线程调度机制与手势系统,并参考 platforms/Linux.Gtk4/ 的规范实现(含核心处理器、Essentials、BlazorWebView 三个子项目)。阶段1在 platforms/[Platform.Name]/ 下搭建自包含项目结构,包含 Directory.Build.props、Directory.Packages.props、.slnx、src 与 samples,命名空间为 Microsoft.Maui.Platforms.[Platform.Name],以 dotnet build platforms/[Platform.Name]/[Platform.Name].slnx 通过为完成标准。阶段2实现基础处理器、Dispatcher、MauiContext、应用与窗口处理器、ContentPage、LayoutHandler 与 Label,让 Hello World 上屏。阶段3加入常用控件、字体管理、手势与基础 Essentials。阶段4处理导航、对话框与动画。阶段5覆盖 CollectionView、Shell、WebView、构建目标与模板。
关键原则:布局由 MAUI 计算,处理器只通过 GetDesiredSize 与 PlatformArrange 应用框架;所有布局共用一个 LayoutHandler;用 PropertyMapper 驱动属性更新;通用视图属性放在基类处理器映射器中。
限制与注意事项:AlertManager 为内部类型,必须使用 DispatchProxy 加反射;不要用 MainThread.BeginInvokeOnMainThread,改用 Application.Current?.Dispatcher.Dispatch();Essentials 需 SetDefault() 反射,仅 DI 注册不够;原生布局重写需全部 try-catch 并防 NaN;Shell 导航须切回主线程;Label 文本属性应统一走单个 UpdateAttributedText();图片需实现回退链。调试时先杀掉旧进程,用 maui devflow wait 等待连接,采用并排截图对比审计,原生调试用文件日志。具体平台支持范围、收费与价格信息暂未提供。