# 优化实施计划 ## 优化目标 基于函数调用分析报告,对 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%+ - 网络异常恢复能力增强