Налаштування MMKV-сховища в мобільному додатку
SharedPreferences на Android та UserDefaults на iOS — синхронні операції читання-запису малих значень, але з невідомим overhead. SharedPreferences.apply() асинхронна, а commit() блокує main thread. UserDefaults.synchronize() застаріла, але паттерни використання залишилися. MMKV від Tencent вирішує це через mmap: запис у пам'ять, ОС скидає на диск у фоні — без явного flush, без блокування.
Підключення
// Android: build.gradle
implementation("com.tencent:mmkv:1.3.5")
// Application.onCreate()
MMKV.initialize(this)
// iOS: Package.swift або CocoaPods
// pod 'MMKV', '~> 1.3'
// або SPM: https://github.com/Tencent/MMKV
import MMKV
// AppDelegate.application(_:didFinishLaunchingWithOptions:)
MMKV.initialize(rootDir: nil)
Ініціалізуйте один раз при запуску, потім MMKV.defaultMMKV() доступен везде без синглтонів.
Використання
val kv = MMKV.defaultMMKV()
// Запис
kv.encode("userId", userId)
kv.encode("authToken", token)
kv.encode("lastSyncTimestamp", System.currentTimeMillis())
kv.encode("featureFlags", flagsSet)
// Читання
val token = kv.decodeString("authToken") ?: ""
val lastSync = kv.decodeLong("lastSyncTimestamp", defaultValue = 0L)
Типізовані методи для всіх примітивів: encodeInt, encodeBool, encodeFloat, encodeBytes — для серіалізованих Protobuf/JSON об'єктів.
Шифрування
MMKV підтримує шифрування на рівні файлу AES-128:
val encryptedKV = MMKV.mmkvWithID("secure-storage", MMKV.SINGLE_PROCESS_MODE, "your-crypto-key")
Ніколи не зберігайте ключ шифрування в коді — отримайте його з Android Keystore або iOS Secure Enclave:
let key = try KeychainManager.getOrCreateEncryptionKey(identifier: "mmkv-key")
let secureKV = MMKV(mmapID: "secure", cryptKey: key.data)
Коли MMKV, коли щось інше
MMKV — не заміна БД. Для пар ключ-значення з швидким доступом (налаштування, токени, кеш малих значень) — чудовий вибір. Для структурованих даних з запитами — Room або SQLite.
Міграція з SharedPreferences на MMKV на Android займає годину — API майже ідентичний. Помітний результат: зникають StrictMode жалоби на disk read в main thread при першому читанні SharedPreferences.
Налаштування MMKV з шифруванням та міграцією з SharedPreferences/UserDefaults: 1–2 дні. Вартість розраховується індивідуально.







