🚀Вышла стабильная версия Jetpack DataStore 1.2
Google выпустила долгожданный стабильный релиз DataStore 1.2.0. Эта версия приносит несколько важных улучшений, которые делают библиотеку ещё более мощной и удобной, особенно для проектов, не полностью перешедших на Kotlin Coroutines.
Ключевые нововведения:
✅Поддержка Guava
Появился новый модуль datastore-guava, который предоставляет API на основе ListenableFuture для разработчиков, использующих Guava. Теперь подключать DataStore в проекты на Java стало намного проще (а нужно было???)
// Пример использования GuavaDataStore
val guavaDataStore: DataStore<Preferences> = GuavaDataStore.from(
produceFile = { context.preferencesDataStoreFile("settings.pb") },
serializer = PreferencesSerializer,
executor = Dispatchers.IO.asExecutor() // Используем Executor
)
ListenableFuture<Preferences> future = guavaDataStore.getData();
✅ Мультипроцессность для GuavaDataStore
Функциональность многопроцессного доступа, ранее доступная для Kotlin-версии, теперь добавлена и в GuavaDataStore.
✅Поддержка Android Direct Boot - работа приложений до разблокировки устройства
DataStore теперь можно безопасно использовать в режиме Direct Boot. Для этого данные нужно разместить в защищённом хранилище устройства (Device Protected Storage).
val directBootDataStore = DataStoreFactory.createInDeviceProtectedStorage(
serializer = PreferencesSerializer
) { context.preferencesDataStoreFile("direct_boot_settings.pb") }
✅ Исправления важных багов
👉 Устранен UnsatisifedLinkError при использовании R8 без стандартного ProGuard-файла.
👉 Исправлена проблема, из-за которой операции GuavaDataStore могли запускаться на главном потоке вместо указанного IO-диспетчера.
👉 Решена проблема с FileNotFoundException в OkioStorage при одновременном обращении к файлу (добавлена вторая попытка чтения).
Прочие улучшения
👉 Добавлен PreferencesFileSerializer — готовый сериализатор для работы с FileStorage.
#Android#Jetpack#DataStore#Kotlin#Java#Guava