-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture
nicknull edited this page May 18, 2026
·
1 revision
DroidLink 采用 MVVM (Model-View-ViewModel) 架构,使用 Flutter + Provider 进行状态管理。
┌─────────────────────────────────────────────┐
│ Views │
│ SplashView · HomeView · FileExplorerView │
│ GalleryView · AppManagerView · ScreenshotView│
├─────────────────────────────────────────────┤
│ ViewModels │
│ DeviceViewModel · FileExplorerViewModel │
│ GalleryViewModel · AppManagerViewModel │
│ ScreenshotViewModel │
├─────────────────────────────────────────────┤
│ Services │
│ AdbService · DeviceMonitor · StartupChecker │
│ ApkResourceParser │
├─────────────────────────────────────────────┤
│ External Tools │
│ ADB · scrcpy · aapt │
└─────────────────────────────────────────────┘
| 服务 | 职责 |
|---|---|
| AdbService | 封装所有 ADB 和 scrcpy CLI 命令,自动检测工具路径,支持 Homebrew 安装 |
| DeviceMonitor | 每 2 秒轮询设备列表,广播设备状态变化 |
| StartupChecker | 启动时顺序检测 Homebrew、ADB、scrcpy,引导用户安装 |
| ApkResourceParser | 纯 Dart 解析 APK 二进制文件,提取应用名称 |
| ViewModel | 管理的状态 |
|---|---|
| DeviceViewModel | 设备列表、选中设备、当前页面切换 |
| FileExplorerViewModel | 文件浏览路径、文件列表、多选状态 |
| GalleryViewModel | 媒体扫描、分页加载、缩略图缓存、导出追踪 |
| AppManagerViewModel | 应用列表、标签缓存、收藏、权限管理 |
| ScreenshotViewModel | 截图、录屏进程、历史记录、预览 |
| 模型 | 字段 |
|---|---|
| DeviceInfo | 序列号、型号、Android 版本、电量、存储、分辨率 |
| FileItem | 文件名、路径、类型、大小、修改日期、权限 |
| MediaItem | 文件名、路径、大小、时间戳、是否视频、缩略图路径 |
| AppInfo | 包名、APK 路径、应用名、版本、是否系统应用、大小、是否收藏 |
pubspec.yaml 关键依赖:
├── flutter (UI 框架)
├── provider ^6.1.0 (状态管理)
├── media_kit ^1.2.6 (视频播放)
├── file_selector ^1.0.0 (文件选择对话框)
├── path_provider ^2.1.0 (应用目录)
├── archive ^4.0.9 (APK 解析)
└── url_launcher ^6.3.0 (打开链接)
ADB 和 scrcpy 的检测遵循多级回退:
- 环境变量 (
ANDROID_HOME) - 平台默认路径 (
~/Library/Android/sdk/,%LOCALAPPDATA%\Android\Sdk\) - Homebrew 安装路径 (
/opt/homebrew/bin/,/usr/local/bin/) - 系统 PATH (
which/where)