¶ android-backup-gui
Android 应用数据备份 GUI — 基于 restic 增量备份引擎的 Android 应用数据完整备份/还原工具,支持本地存储与远程同步(WebDAV / SMB)。
- 语言: Kotlin 100% (31 文件, 5,340 行)
- SDK: minSdk 24, targetSdk 34
- 架构: MVVM (Coroutines + StateFlow)
- 状态: 活跃开发中
| 层级 |
技术 |
| 语言 |
Kotlin 1.9 |
| UI |
Material Design 3 |
| 架构 |
MVVM + StateFlow |
| 序列化 |
kotlinx-serialization-json |
| Root |
libsu 6.0 (Magisk/KernelSU/APatch) |
| 备份引擎 |
restic (嵌入式 librestic.so) |
| WebDAV |
sardine-android |
| SMB |
jcifs-ng (SMBJ) |
| 构建 |
Gradle 8.2 + AGP |
backup/ # 核心引擎 (22 文件, ~4,500 行)
BackupOperation.kt # 备份编排 (349 行)
RestoreOperation.kt # 还原编排 (490 行)
ResticWrapper.kt # restic 门面 (292 行)
ResticBackup.kt # 备份子命令 (90 行)
ResticRestore.kt # 还原子命令 (105 行)
ResticSnapshotOps.kt # 快照管理 (104 行)
ResticMaintenance.kt # 维护 (100 行)
ResticRepoInit.kt # 初始化 (72 行)
ResticCommandRunner.kt # 进程执行 (142 行)
RemoteTransport.kt # 传输抽象 (372 行)
WebdavTransport.kt # WebDAV (184 行)
SmbTransport.kt # SMB (233 行)
RemoteSyncManager.kt # 同步编排 (236 行)
AppScanner.kt # 应用扫描 (204 行)
WifiManager.kt # WiFi 备份 (87 行)
BackupConfig.kt # 配置 (187 行)
AppError.kt # 错误类型 (123 行)
ui/ # UI 层 (4 文件, ~1,350 行)
BackupFragment.kt # 备份页面 (311 行)
RestoreFragment.kt # 还原页面 (418 行)
ConfigFragment.kt # 配置页面 (216 行)
ConfigViewModel.kt # 状态管理 (340 行)
- AppScanner 获取第三方应用列表
- 并行 (Semaphore=3) 处理: APK -> 数据 -> OBB -> SSAID -> 权限 -> WiFi
- ResticWrapper 创建增量快照
- RemoteSyncManager 同步到远程 (可选)
- 完整性验证
- 从远程拉取快照
- restic restore 还原
- 停止应用 -> 还原 APK -> 还原数据 -> 还原权限
- 重置应用
- 去重增量备份 (content-defined chunking)
- AES-256-GCM 加密
- 快照保留策略: 7d / 4w / 3m
- 完整性验证
- WebDAV: sardine-android (123云盘, Nextcloud)
- SMB: jcifs-ng (NAS, Windows 共享)
- 指数退避重试: 1s-2s-4s, max 3
| 指标 |
数值 |
| Kotlin 文件 |
31 |
| 总代码行数 |
5,340 |
| 最大文件 |
RestoreOperation.kt (490 行) |
| restic 集成 |
8 模块 ~1,000 行 |
| 远程传输 |
3 模块 ~800 行 |