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

7.0 KiB
Raw Permalink Blame History

优化实施计划

优化目标

基于函数调用分析报告,对 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%+
  • 网络异常恢复能力增强