Настройка 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 на Android миграция на MMKV занимает час — API почти идентичен. Заметный результат: исчезают StrictMode жалобы на disk read в main thread при первом чтении SharedPreferences.
Настройка MMKV с шифрованием и миграцией с SharedPreferences/UserDefaults: 1–2 дня. Стоимость рассчитывается индивидуально.







