Files
LanMountainDesktop/docs/01-AirApp开发/README.md

267 lines
9.1 KiB
Markdown
Raw Normal View History

2026-08-11 23:03:55 +08:00
# 轻应用开发完整指南
2026-06-08 03:54:33 +08:00
2026-08-11 23:03:55 +08:00
欢迎来到阑山桌面轻应用开发指南!本章节将带你从零开始,掌握轻应用开发的完整流程。
2026-06-08 03:54:33 +08:00
## 📚 学习路径
### 初学者路径
2026-08-11 23:03:55 +08:00
如果你是第一次开发阑山桌面轻应用,请按以下顺序学习:
2026-06-08 03:54:33 +08:00
1. **[环境准备](01-快速开始/01-环境准备.md)** - 配置开发环境和工具
2026-08-11 23:03:55 +08:00
2. **[创建第一个轻应用](01-快速开始/02-创建第一个轻应用.md)** - 快速上手
3. **[轻应用生命周期](02-核心概念/01-轻应用生命周期.md)** - 理解轻应用运行机制
2026-06-08 03:54:33 +08:00
4. **[组件系统](02-核心概念/02-组件系统.md)** - 创建桌面组件
### 进阶路径
已经了解基础,想要深入学习?
2026-08-11 23:03:55 +08:00
1. **[设置系统](02-核心概念/03-设置系统.md)** - 管理轻应用配置
2026-06-08 03:54:33 +08:00
2. **[主题与外观](02-核心概念/04-主题外观.md)** - 适配暗色/亮色模式
2026-08-11 23:03:55 +08:00
3. **[轻应用通信](02-核心概念/05-轻应用通信.md)** - 轻应用间数据交互
2026-06-08 03:54:33 +08:00
4. **[IPC 公共服务](03-API参考/05-IPC公共服务.md)** - 对外提供服务
### 实战路径
通过完整案例学习:
2026-08-11 23:03:55 +08:00
1. **[天气组件轻应用](04-实战案例/01-天气组件.md)** - 完整的组件开发
2. **[待办事项轻应用](04-实战案例/02-待办事项.md)** - 数据持久化
2026-06-08 03:54:33 +08:00
3. **[RSS 阅读器](04-实战案例/03-RSS阅读器.md)** - 网络请求和列表展示
2026-08-11 23:03:55 +08:00
4. **[系统监控轻应用](04-实战案例/04-系统监控.md)** - 系统信息获取
2026-06-08 03:54:33 +08:00
## 🎯 核心概念
2026-08-11 23:03:55 +08:00
### 什么是轻应用?
2026-06-08 03:54:33 +08:00
2026-08-11 23:03:55 +08:00
轻应用是扩展阑山桌面功能的独立模块,可以:
2026-06-08 03:54:33 +08:00
- ✅ 添加新的桌面组件Widget
- ✅ 注册设置页面
- ✅ 提供后台服务
2026-08-11 23:03:55 +08:00
- ✅ 与其他轻应用通信
2026-06-08 03:54:33 +08:00
- ✅ 对外提供 IPC 服务
2026-08-11 23:03:55 +08:00
### 轻应用架构
2026-06-08 03:54:33 +08:00
```
┌─────────────────────────────────────┐
│ LanMountainDesktop Host │
│ (桌面宿主 - 主程序) │
├─────────────────────────────────────┤
2026-08-11 23:03:55 +08:00
│ AirApp Runtime (轻应用运行时) │
2026-06-08 03:54:33 +08:00
│ ┌────────────┐ ┌────────────┐ │
2026-08-11 23:03:55 +08:00
│ │ AirApp A │ │ AirApp B │ │
2026-06-08 03:54:33 +08:00
│ ├────────────┤ ├────────────┤ │
│ │ Components │ │ Components │ │
│ │ Settings │ │ Settings │ │
│ │ Services │ │ Services │ │
│ └────────────┘ └────────────┘ │
└─────────────────────────────────────┘
```
2026-08-11 23:03:55 +08:00
### 轻应用 SDK 版本
2026-06-08 03:54:33 +08:00
| SDK 版本 | 发布时间 | 主要特性 |
|---------|---------|---------|
| **5.0.0** | 2025.05 | 当前版本 - 进程隔离准备、IPC 公共服务 |
| 4.0.0 | 2025.03 | 组件系统重构、设置域管理 |
| 3.0.0 | 2025.01 | Avalonia 12 升级 |
2026-08-11 23:03:55 +08:00
| 2.0.0 | 2024.11 | 稳定 API轻应用市场支持 |
2026-06-08 03:54:33 +08:00
| 1.0.0 | 2024.09 | 初始版本 |
## 📖 文档结构
### [01-快速开始](01-快速开始/)
2026-08-11 23:03:55 +08:00
快速上手,从零到一创建轻应用
2026-06-08 03:54:33 +08:00
- [环境准备](01-快速开始/01-环境准备.md) - 安装工具和模板
2026-08-11 23:03:55 +08:00
- [创建第一个轻应用](01-快速开始/02-创建第一个轻应用.md) - 实现基本功能
2026-06-08 03:54:33 +08:00
- [调试与测试](01-快速开始/03-调试测试.md) - 调试技巧
2026-08-11 23:03:55 +08:00
- [打包轻应用](01-快速开始/04-打包轻应用.md) - 生成 .laapp 文件
2026-06-08 03:54:33 +08:00
### [02-核心概念](02-核心概念/)
2026-08-11 23:03:55 +08:00
深入理解轻应用系统的工作原理
2026-06-08 03:54:33 +08:00
2026-08-11 23:03:55 +08:00
- [轻应用生命周期](02-核心概念/01-轻应用生命周期.md) - 加载、初始化、卸载
2026-06-08 03:54:33 +08:00
- [组件系统](02-核心概念/02-组件系统.md) - 桌面组件的创建和管理
- [设置系统](02-核心概念/03-设置系统.md) - 配置持久化
- [主题与外观](02-核心概念/04-主题外观.md) - 适配主题和圆角系统
2026-08-11 23:03:55 +08:00
- [轻应用通信](02-核心概念/05-轻应用通信.md) - 轻应用间协作
2026-06-08 03:54:33 +08:00
### [03-API参考](03-API参考/)
完整的 API 文档和使用示例
2026-08-11 23:03:55 +08:00
- [IAirApp 接口](03-API参考/01-IAirApp接口.md) - 轻应用入口
- [IAirAppRuntimeContext](03-API参考/02-IAirAppRuntimeContext.md) - 轻应用上下文
2026-06-08 03:54:33 +08:00
- [组件 API](03-API参考/03-组件API.md) - 组件开发接口
- [设置 API](03-API参考/04-设置API.md) - 设置管理接口
- [IPC 公共服务](03-API参考/05-IPC公共服务.md) - 对外服务接口
- [日志 API](03-API参考/06-日志API.md) - 日志记录
### [04-实战案例](04-实战案例/)
2026-08-11 23:03:55 +08:00
通过完整示例学习轻应用开发
2026-06-08 03:54:33 +08:00
- [天气组件](04-实战案例/01-天气组件.md) - API 调用、数据展示
- [待办事项](04-实战案例/02-待办事项.md) - 数据持久化、CRUD
- [RSS 阅读器](04-实战案例/03-RSS阅读器.md) - 网络请求、列表
- [系统监控](04-实战案例/04-系统监控.md) - 系统信息、实时更新
### [05-发布维护](05-发布维护/)
2026-08-11 23:03:55 +08:00
轻应用的发布、更新和维护
2026-06-08 03:54:33 +08:00
- [版本管理](05-发布维护/01-版本管理.md) - 语义化版本
- [CI/CD 配置](05-发布维护/02-CICD配置.md) - 自动构建
2026-08-11 23:03:55 +08:00
- [发布到市场](05-发布维护/03-发布市场.md) - 轻应用市场发布
2026-06-08 03:54:33 +08:00
- [用户反馈](05-发布维护/04-用户反馈.md) - 收集和处理反馈
- [迁移指南](05-发布维护/05-迁移指南.md) - SDK 版本升级
## 🚀 快速参考
2026-08-11 23:03:55 +08:00
### 创建轻应用
2026-06-08 03:54:33 +08:00
```powershell
# 安装模板
2026-08-11 23:03:55 +08:00
dotnet new install LanMountainDesktop.AirAppTemplate
2026-06-08 03:54:33 +08:00
# 创建项目
2026-08-11 23:03:55 +08:00
dotnet new lmd-airapp -n MyAirApp
2026-06-08 03:54:33 +08:00
# 构建
dotnet build
```
2026-08-11 23:03:55 +08:00
### 轻应用入口
2026-06-08 03:54:33 +08:00
```csharp
2026-08-11 23:03:55 +08:00
public class AirApp : IAirApp
2026-06-08 03:54:33 +08:00
{
public string Id => "com.example.myplugin";
2026-08-11 23:03:55 +08:00
public string Name => "My AirApp";
2026-06-08 03:54:33 +08:00
public string Version => "1.0.0";
2026-08-11 23:03:55 +08:00
public async Task InitializeAsync(IAirAppRuntimeContext context)
2026-06-08 03:54:33 +08:00
{
// 注册组件
var registry = context.Services.GetService<IComponentRegistry>();
registry?.RegisterComponent<MyComponent>();
}
public Task ShutdownAsync() => Task.CompletedTask;
}
```
### 创建组件
```csharp
[Component(
Id = "com.example.myplugin.mycomponent",
Name = "我的组件",
Category = "工具"
)]
public class MyComponent : ComponentBase
{
public override string Id => "com.example.myplugin.mycomponent";
public override string Name => "我的组件";
}
```
## 💡 最佳实践
### 代码规范
- ✅ 使用异步编程(`async/await`
- ✅ 启用可空引用类型(`nullable enable`
- ✅ 编写 XML 文档注释
- ✅ 遵循 C# 命名约定
- ✅ 使用依赖注入模式
### 性能优化
- ✅ 避免阻塞 UI 线程
- ✅ 使用延迟加载
- ✅ 缓存数据避免重复计算
- ✅ 及时释放资源(实现 `IDisposable`
- ✅ 使用弱事件模式避免内存泄漏
### 用户体验
- ✅ 适配亮色/暗色主题
- ✅ 支持多语言本地化
- ✅ 提供友好的错误提示
- ✅ 响应式设计适配不同分辨率
- ✅ 提供设置页让用户自定义
## 🔗 相关资源
### 官方资源
- [GitHub 仓库](https://github.com/HelloWRC/LanMountainDesktop)
2026-08-11 23:03:55 +08:00
- [轻应用示例](https://github.com/HelloWRC/LanMountainDesktop.SampleAirApp)
- [SDK 源码](https://github.com/HelloWRC/LanMountainDesktop/tree/main/LanMountainDesktop.AirAppSdk)
2026-06-08 03:54:33 +08:00
- [问题反馈](https://github.com/HelloWRC/LanMountainDesktop/issues)
### 技术文档
- [Avalonia UI 文档](https://docs.avaloniaui.net/)
- [FluentAvalonia 文档](https://github.com/amwx/FluentAvalonia/wiki)
- [CommunityToolkit.Mvvm](https://learn.microsoft.com/dotnet/communitytoolkit/mvvm/)
- [.NET API 浏览器](https://learn.microsoft.com/dotnet/api/)
### 社区
- [GitHub Discussions](https://github.com/HelloWRC/LanMountainDesktop/discussions) - 技术讨论
2026-08-11 23:03:55 +08:00
- [轻应用市场](https://github.com/HelloWRC/LanMountainDesktop/wiki/AirApps) - 浏览现有轻应用
2026-06-08 03:54:33 +08:00
## ❓ 常见问题
### 我需要什么基础?
- **必需**: C# 基础语法、面向对象编程
- **推荐**: XAML/Avalonia UI 基础、MVVM 模式
- **加分**: 异步编程、依赖注入
2026-08-11 23:03:55 +08:00
### 轻应用可以做什么?
2026-06-08 03:54:33 +08:00
2026-08-11 23:03:55 +08:00
轻应用可以:
2026-06-08 03:54:33 +08:00
- ✅ 添加桌面组件(显示天气、时钟、待办等)
- ✅ 添加设置页面
- ✅ 提供后台服务(定时任务、数据同步等)
2026-08-11 23:03:55 +08:00
- ✅ 与其他轻应用通信
2026-06-08 03:54:33 +08:00
- ✅ 通过 IPC 对外提供服务
2026-08-11 23:03:55 +08:00
轻应用不能:
2026-06-08 03:54:33 +08:00
- ❌ 修改宿主核心代码
2026-08-11 23:03:55 +08:00
- ❌ 直接访问其他轻应用的私有数据
2026-06-08 03:54:33 +08:00
- ❌ 绕过权限系统访问敏感资源
2026-08-11 23:03:55 +08:00
### 如何调试轻应用?
2026-06-08 03:54:33 +08:00
2026-08-11 23:03:55 +08:00
1. 将轻应用构建到宿主的轻应用目录
2026-06-08 03:54:33 +08:00
2. 启动宿主应用
3. 使用 IDE 附加到宿主进程
2026-08-11 23:03:55 +08:00
4. 在轻应用代码中设置断点
2026-06-08 03:54:33 +08:00
详见 [调试与测试](01-快速开始/03-调试测试.md)
2026-08-11 23:03:55 +08:00
### 轻应用会被隔离运行吗?
2026-06-08 03:54:33 +08:00
2026-08-11 23:03:55 +08:00
当前轻应用运行在宿主进程内in-process 模式),未来将支持进程隔离模式:
2026-06-08 03:54:33 +08:00
2026-08-11 23:03:55 +08:00
- **当前**: 进程内轻应用,共享内存空间
- **未来**: 进程隔离轻应用,独立进程运行(计划中)
2026-06-08 03:54:33 +08:00
## 🎯 下一步
准备开始了吗?
- [环境准备](01-快速开始/01-环境准备.md) - 配置开发环境
2026-08-11 23:03:55 +08:00
- [创建第一个轻应用](01-快速开始/02-创建第一个轻应用.md) - 动手实践
- [轻应用生命周期](02-核心概念/01-轻应用生命周期.md) - 理解原理