Manajemen State Aplikasi
Panduan Backup & Restore State Data Aplikasi
Dokumen ini menjelaskan secara mendalam fitur pencadangan dan pemulihan (backup & restore) state sesi aplikasi secara native di mode Recovery menggunakan KuyFox.
🏗️ Mengapa Backup di Mode Recovery?
Melakukan backup data aplikasi di mode recovery memiliki keunggulan mutlak dibanding aplikasi backup online:
- Zero Locking (Integritas Database 100%): Karena sistem Android sedang mati (offline), database SQLite dan file sesi (
shared_prefs,keva, dsb.) tidak sedang digunakan atau dikunci oleh proses aplikasi di latar belakang. Tidak ada risiko database korup. - Tidak Perlu Daemon Online / Root Runtime: Seluruh proses dijalankan langsung oleh shell Linux Recovery.
- Penyimpanan Sangat Ringan: File arsip dikompresi langsung ke
/sdcard/KuyFox/databackup/.
⚙️ Inovasi Teknis Engine KuyFox
1. Arsitektur Bind-Mount Recovery (Mencegah Shadowed Files)
Pada custom recovery (OrangeFox/TWRP), folder /data/user/0 sering kali merupakan mountpoint atau symlink yang terpisah dari /data/data. Jika backup diekstrak sembarangan di recovery, file seringkali masuk ke folder bayangan (shadow mount) dan hilang saat booting ke sistem Android.
KuyFox memecahkan masalah ini dengan secara otomatis melakukan bind-mount:
mount -o bind /data/data /data/user/0
Ekstraksi ke salah satu path akan langsung mendarat di penyimpanan fisik yang sebenarnya, sehingga data aplikasi 100% langsung terbaca saat HP menyala.
2. Penanganan Konteks Keamanan SELinux MLS Deterministik
Setiap aplikasi di Android memiliki label keamanan SELinux tersendiri dengan kategori MLS unik, contohnya:
u:object_r:app_data_file:s0:c123,c456
Jika data aplikasi diekstrak tanpa label SELinux yang tepat, Android di mode Enforcing akan menolak akses (Permission Denied) dan aplikasi akan langsung force close. KuyFox secara otomatis membaca UID aplikasi dari packages.xml, menghitung kategori MLS yang tepat, dan menerapkan chcon secara presisi.
3. Pembuatan Ulang Native Library Symlink (lib)
KuyFox memeriksa direktori instalasi APK asli dan membuat ulang symlink /data/data/<pkg>/lib yang mengarah ke library arsitektur hardware perangkat (misal /data/app/.../lib/arm64).
📝 Konfigurasi Aturan & Alias (backup_config.cfg)
File konfigurasi backup_config.cfg memungkinkan Anda mengatur aplikasi apa saja yang tampil di menu, nama panggilannya (alias), serta folder apa yang ingin disertakan atau dibuang.
Format Konfigurasi:
# ALIAS / APP NAME | PACKAGE_NAME | MODE | PATHS
Test App Suite Alpha | com.example.testapp.alpha | INCLUDE | databases, shared_prefs, files/session*
Benchmark QA Client | com.benchmark.qaclient | INCLUDE | databases, shared_prefs
Enterprise Demo App | com.enterprise.demomobile| DEFAULT
Core Auth Client | com.example.authclient | EXCLUDE | files/cache, files/temp
Penjelasan Mode:
- Mode
INCLUDE(Sangat Disarankan untuk Aplikasi Pengujian Berat):- Hanya mencadangkan folder atau pola file state yang esensial (contoh: hanya
databases,shared_prefs, danfiles/session*). - Hasil: Aplikasi dengan cache besar yang biasanya berukuran 200 MB - 1 GB dapat dipangkas menjadi hanya ~300 KB file state murni!
- Backup & restore berjalan secepat kilat (< 1 detik) dan mencegah memory error BusyBox
tarOut-Of-Memory (OOM) pada recovery.
- Hanya mencadangkan folder atau pola file state yang esensial (contoh: hanya
- Mode
EXCLUDE:- Mencadangkan semua file data aplikasi, namun mengabaikan folder cache sementara yang ditentukan di kolom paths.
- Mode
DEFAULT:- Pencadangan standar yang otomatis membuang folder sampah global (
cache,code_cache,lib,.msm_cache).
- Pencadangan standar yang otomatis membuang folder sampah global (
📂 Manajemen Slot Standar (001 - 999)
Data hasil pencadangan disimpan di direktori:
/sdcard/KuyFox/databackup/<package_name>/
Struktur folder tiap slot:
/sdcard/KuyFox/databackup/com.example.testapp.alpha/
├── 001/
│ ├── data.tar.gz # Arsip data aplikasi terkompresi
│ ├── profile.env # Snapshot profil perangkat saat backup dibuat
│ ├── ssaid.txt # SSAID unik aplikasi saat backup dibuat
│ └── note.txt # Catatan sesi pengujian (misal: "Sesi Uji Baseline")
├── 002/
└── 003/
Fitur Pengelolaan Slot:
- Penomoran Otomatis: Setiap backup baru otomatis mengisi slot berikutnya (
001,002,003, dst.). - Tampilan Paginasi: Jika Anda memiliki puluhan slot pengujian, daftar akan dibagi per halaman dengan tombol navigasi
[N] Nextdan[P] Prev. - Sync / Re-Order Slot: Jika Anda menghapus slot di tengah (misal slot
002dihapus), opsi sync akan merapikan urutan folder kembali menjadi kontigu (001,002).
🔄 Pemulihan Pintar (Smart Dual-Source Restore)
Saat Anda memilih untuk merestore data:
- Backup Buatan KuyFox (
profile.envAda):- KuyFox akan mendeteksi informasi perangkat dan SSAID saat backup dibuat.
- Anda akan ditanya apakah ingin merestore profil perangkat & SSAID sekaligus.
- Ini sangat berguna untuk uji regresi (regression testing) agar state sesi pengujian dan parameter otentikasi uji dapat dipulihkan secara deterministik tanpa merusak integritas lingkungan uji.
- Backup dari Tool Luar (Data Murni):
- Jika
profile.envtidak ada, KuyFox otomatis mendeteksi ini sebagai backup data murni. - KuyFox akan langsung mengekstrak data aplikasi dan mengatur hak akses SELinux tanpa menampilkan pertanyaan yang tidak perlu.
- Jika
🚀 Panduan Penggunaan Langkah demi Langkah
Cara Melakukan Backup Data State:
- Masuk ke menu utama KuyFox (
kuyfox), pilih[1] Backup & Restore App Data. - Pilih
[1] Backup App Data. - Pilih aplikasi sasaran dari daftar yang telah dikonfigurasi (atau ketik
[A]untuk memindai seluruh aplikasi yang terpasang di HP Anda). - Beri catatan pengingat sesi (opsional, misal: Sesi Pengujian Login Valid).
- Proses backup selesai dalam sekejap!
Cara Melakukan Restore Data State:
- Masuk ke menu
[1] Backup & Restore App Data. - Pilih
[2] Restore App Data. - Pilih aplikasi yang ingin direstore (terlihat jumlah slot backup yang tersedia).
- Pilih nomor slot yang diinginkan (misal
1untuk slot001). - Konfirmasi restore data. Selesai!
💻 Penggunaan via Perintah Cepat CLI
Untuk proses otomasi atau script ADB pengujian:
# Backup data state aplikasi dengan catatan sesi
kuyfox -ba com.example.testapp.alpha "Sesi_Uji_01"
# Restore slot tertentu (contoh slot 001)
kuyfox -ra com.example.testapp.alpha 001
# Restore slot 001 beserta profil identitas perangkatnya
kuyfox -ra com.example.testapp.alpha 001 --props
# Menampilkan seluruh daftar backup state yang ada di HP
kuyfox -la