Backpack v2.0.4 — Unified All-in-One Cloud & Local Backup Suite with Media Attachments
Latest🎒 Backpack v2.0.4 — Unified Backup Suite
We are thrilled to announce Backpack v2.0.4! This major release transforms Backpack from a standalone Google Drive database backup utility into a complete, all-in-one Android backup and restore framework for both Cloud and Local storage, featuring full media attachment handling and deterministic cross-device remapping.
🌟 What's New in v2.0.4
1. 📱 Local Device Storage Support (SAF)
- Seamlessly export and import encrypted backup archives to/from device storage or SD card via Android's Storage Access Framework (SAF).
- Full coroutine and Flow-based lifecycle with detailed progress reporting (
LocalBackupResult).
2. 🖼️ Full Media Attachments Archiving
- Automatically bundles images, audio recordings, videos, PDFs, and custom attachments together with your Room database into a single, compressed archive.
- Type-safe
AttachmentTypeenums (IMAGE,AUDIO,VIDEO,PDF,DOCUMENT,GENERIC).
3. 🔄 Deterministic Manifest-Driven Path Remapping
- Replaced heuristic string detection with Manifest-Driven Attachment Remapping.
- Extracted attachment references in SQLite tables (plain text, JSON arrays, JSON objects) are safely updated to the new device’s local filesystem directory with zero false positives.
4. ⚠️ Smart Conflict Resolution
- Added built-in detection for duplicate attachments during restore (
ConflictDetected). - Supports user-driven conflict policies:
OVERWRITE,SKIP, orASK_USER.
5. 🛡️ 100% Backward Compatibility & Safety
- V1 Legacy DB Fallback: Restores older uncompressed
.dbbackups from Google Drive seamlessly without errors. - Incompatible Schema Protection: Verifies SQLite
PRAGMA user_versionto prevent downgrading or corrupting databases from newer app versions. - Atomic DB Swaps & Rollback: Safe WAL checkpointing and
.bakfile rollback protection. - Zip Slip Defense: Validates all archive entries against directory traversal attacks.
6. 📄 Licensing
- Updated license to MIT License with Attribution Required.
📦 Installation (JitPack)
Add JitPack to your settings.gradle.kts:
dependencyResolutionManagement {
repositories {
maven { url = uri("https://jitpack.io") }
}
}