Files
android-backup-gui/optimization-plan.md

313 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 优化实施计划
## 优化目标
基于函数调用分析报告,对 Android Backup GUI 进行系统性优化,目标:
1. **性能提升**:备份/恢复速度提升 30-50%
2. **代码质量**:消除重复代码,统一错误处理
3. **用户体验**:详细进度、友好错误提示、智能建议
4. **可靠性**:增加重试机制、改进错误恢复
---
## Phase 1: 基础优化P1 优先级)
### 1.1 提取密码获取公共函数
**问题**:密码获取逻辑在 3+ 处重复
**实施**
- 创建 `CredentialProvider` 对象
- 统一密码获取和设置逻辑
- 支持从 KeyStore 和配置文件获取
**文件修改**
- `app/src/main/java/com/example/androidbackupgui/backup/CredentialProvider.kt` (新建)
- `BackupViewModel.kt`
- `ConfigViewModel.kt`
- `RestoreScreen.kt`
**预期收益**
- 消除 ~50 行重复代码
- 统一密码管理逻辑
- 便于后续维护
### 1.2 应用信息缓存机制
**问题**:重复查询应用版本、大小等信息
**实施**
- 创建 `AppMetadataCache` 对象
- 缓存版本号、APK 路径、OBB 信息
- 支持手动失效和自动过期
**文件修改**
- `app/src/main/java/com/example/androidbackupgui/backup/AppMetadataCache.kt` (新建)
- `BackupOperation.kt`
- `AppScanner.kt`
**预期收益**
- 减少 30-40% 的 RootShell 调用
- 增量备份速度提升 50%+
### 1.3 批量 RootShell 调用优化
**问题**:多次独立 RootShell 调用导致进程开销
**实施**
- 创建 `BatchRootShell` 工具类
- 实现批量文件检查、版本查询、状态检查
- 优化 BackupOperation 中的重复调用
**文件修改**
- `app/src/main/java/com/example/androidbackupgui/backup/BatchRootShell.kt` (新建)
- `BackupOperation.kt`
- `RestoreOperation.kt`
**预期收益**
- 减少 20-30% 的 RootShell 调用
- 备份速度提升 15-25%
---
## Phase 2: 核心优化P0 优先级)
### 2.1 增量备份优化
**问题**:每次备份都查询所有应用信息
**实施**
- 优化增量检查逻辑
- 批量查询版本号
- 智能跳过未变化应用
**文件修改**
- `BackupOperation.kt` - `backupApps()` 方法
- `AppMetadataCache.kt` - 集成缓存
**预期收益**
- 增量备份时间减少 80%+
- 网络传输减少 90%+
### 2.2 智能并发控制
**问题**:固定并发数 Semaphore(3) 不适应所有场景
**实施**
- 根据 CPU 核心数动态调整并发
- 根据内存使用率调整并发
- SSD/eMMC 存储类型检测
**文件修改**
- `BackupOperation.kt` - `backupApps()` 方法
- `RestoreOperation.kt` - `restoreApps()` 方法
**预期收益**
- 高端设备备份速度提升 30%+
- 低端设备稳定性提升
### 2.3 Restic 增量备份优化
**问题**Restic 增量去重是核心竞争力,但调用链可优化
**实施**
- 优化 ResticCommandRunner 调用
- 增加连接健康检查
- 实现网络重试机制
**文件修改**
- `ResticCommandRunner.kt`
- `BackendExecutor.kt`
- `RestBridgeRunner.kt`
**预期收益**
- 远程备份成功率提升
- 网络异常恢复能力增强
---
## Phase 3: 用户体验优化P2 优先级)
### 3.1 进度显示优化
**问题**:进度信息不够详细,缺少预计时间
**实施**
- 重构 `BackupProgress` 数据类
- 计算总体进度百分比
- 估算剩余时间
**文件修改**
- `BackupOperation.kt` - `BackupProgress`
- `BackupViewModel.kt` - 进度处理
- `BackupScreen.kt` - UI 显示
**预期收益**
- 用户体验显著提升
- 备份过程更透明
### 3.2 错误处理优化
**问题**:错误信息不友好,缺少解决建议
**实施**
- 扩展 `AppError` 类型系统
- 添加错误解决建议
- 支持错误恢复机制
**文件修改**
- `AppError.kt`
- `BackupViewModel.kt`
- `RestoreOperation.kt`
**预期收益**
- 用户自助解决问题能力提升
- 技术支持成本降低
### 3.3 恢复预览功能
**问题**:恢复前无法预览将要恢复的内容
**实施**
- 创建 `RestorePreview` 数据类
- 显示将要恢复的应用列表
- 标记会覆盖的应用
**文件修改**
- `RestoreScreen.kt`
- `RestoreOperation.kt`
**预期收益**
- 避免误恢复
- 用户决策更明智
---
## Phase 4: 高级优化P3 优先级)
### 4.1 并行恢复优化
**问题**:恢复操作串行执行,效率低
**实施**
- APK 安装并行化
- 数据恢复并行化
- SSAID 恢复串行化(依赖已安装应用)
**文件修改**
- `RestoreOperation.kt` - `restoreApps()` 方法
**预期收益**
- 恢复速度提升 40%+
### 4.2 备份完整性校验
**问题**:备份后缺少完整性校验
**实施**
- 备份后自动校验归档
- 生成校验和文件
- 支持手动校验
**文件修改**
- `BackupOperation.kt` - 备份后校验
- `ResticBackup.kt` - Restic 校验
**预期收益**
- 数据完整性保障
- 用户信心提升
### 4.3 配置导入导出优化
**问题**:配置导出不够完善
**实施**
- 支持完整配置导出(包括密码)
- 支持配置导入验证
- 支持配置迁移
**文件修改**
- `ConfigViewModel.kt`
- `ConfigScreen.kt`
**预期收益**
- 用户迁移配置更方便
- 减少配置错误
---
## 实施顺序
### Week 1: Phase 1 - 基础优化
- [ ] 1.1 提取密码获取公共函数
- [ ] 1.2 应用信息缓存机制
- [ ] 1.3 批量 RootShell 调用优化
### Week 2: Phase 2 - 核心优化
- [ ] 2.1 增量备份优化
- [ ] 2.2 智能并发控制
- [ ] 2.3 Restic 增量备份优化
### Week 3: Phase 3 - 用户体验优化
- [ ] 3.1 进度显示优化
- [ ] 3.2 错误处理优化
- [ ] 3.3 恢复预览功能
### Week 4: Phase 4 - 高级优化
- [ ] 4.1 并行恢复优化
- [ ] 4.2 备份完整性校验
- [ ] 4.3 配置导入导出优化
---
## 风险评估
### 高风险
- **增量备份逻辑修改** - 可能导致数据丢失
- 缓解:充分测试,保留旧逻辑作为回退
### 中风险
- **并发控制调整** - 可能影响稳定性
- 缓解:渐进式调整,监控性能指标
### 低风险
- **缓存机制** - 可能导致数据不一致
- 缓解:实现缓存失效机制,支持手动刷新
---
## 测试策略
### 单元测试
- CredentialProvider 测试
- AppMetadataCache 测试
- BatchRootShell 测试
### 集成测试
- 完整备份流程测试
- 增量备份流程测试
- 恢复流程测试
### 性能测试
- 100 应用备份性能测试
- 增量备份性能测试
- 远程备份性能测试
### 用户验收测试
- 真实设备测试
- 用户场景测试
- 边界条件测试
---
## 预期成果
### 性能提升
- 首次完整备份15分钟 → 10分钟 (33% 提升)
- 增量备份3分钟 → 30秒 (83% 提升)
- 恢复操作10分钟 → 6分钟 (40% 提升)
- 远程备份30分钟 → 20分钟 (33% 提升)
### 代码质量
- 重复代码减少 60%+
- 单元测试覆盖率提升到 70%+
- 代码可维护性显著提升
### 用户体验
- 进度显示更详细
- 错误提示更友好
- 操作流程更顺畅
### 可靠性
- 备份成功率提升到 99%+
- 恢复成功率提升到 99%+
- 网络异常恢复能力增强