DataStore
| Последнее обновление | Основная версия | Release Candidate | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 12 октября 2026 г. | 1.2.1 | 1.3.0-rc01 | - | - |
Объявление зависимостей
Чтобы добавить зависимость от DataStore, необходимо добавить в проект репозиторий Google Maven. Подробную информацию можно найти в статье Репозиторий Google Maven.
DataStore предлагает разные варианты сериализации. Выберите один из них. Вы также можете добавить зависимости, не связанные с Android, в любую реализацию.
Добавьте зависимости для нужной реализации в файл build.gradle приложения или модуля:
Preferences DataStore
Добавьте в раздел зависимостей файла gradle следующие строки:
Яркий
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.1" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.2.1") }
Чтобы добавить поддержку RxJava, добавьте следующие зависимости:
Яркий
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.2.1") }
DataStore
Добавьте в раздел зависимостей файла gradle следующие строки:
Яркий
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.1" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.2.1") }
Добавьте следующие необязательные зависимости для поддержки RxJava:
Яркий
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.1") }
Чтобы сериализовать контент, добавьте зависимости для буферов протокола или сериализации JSON.
Сериализация JSON
Чтобы использовать сериализацию JSON, добавьте в файл Gradle следующий код:
Яркий
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0" }
Kotlin
plugins { id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0") }
Сериализация Protobuf
Чтобы использовать сериализацию Protobuf, добавьте в файл Gradle следующее:
Яркий
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation "com.google.protobuf:protobuf-kotlin-lite:4.32.1" } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
Kotlin
plugins { id("com.google.protobuf") version "0.9.5" } dependencies { implementation("com.google.protobuf:protobuf-kotlin-lite:4.32.1") } protobuf { protoc { artifact = "com.google.protobuf:protoc:4.32.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } create("kotlin") } } } }
Отзыв
Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите новые проблемы или у вас появятся идеи по улучшению этой библиотеки, сообщите нам. Прежде чем сообщать о новых ошибках, изучите уже добавленные. Чтобы проголосовать за существующую проблему, нажмите на значок звездочки.
Дополнительную информацию можно найти в документации по системе отслеживания ошибок.
Версия 1.3
Версия 1.3.0-rc01
12 октября 2026 г.
Выход androidx.datastore:datastore-*:1.3.0-rc01. Версия 1.3.0-rc01 содержит эти коммиты.
Изменения в API
- Используйте
WindowCompat#enableEdgeToEdge(Window)вместоEdgeToEdge#enable()(Ibff3e).
Исправление ошибок
- Зависимость
androidx.lifecycle:lifecycle-runtimeобновлена до версии 2.10.0. Эта версия необходима для запуска встроенных проверок времени выполнения жизненного цикла с AGP версии 9.5.0-alpha04 или более поздней. (I99bfd, b/556807521)
Версия 1.3.0-alpha11
9 сентября 2026 г.
Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha11". Версия 1.3.0-alpha11 содержит эти коммиты.
Исправление ошибок
- Путь к файлу не включается в сообщения
CorruptionException, которые появляются при сбое синтаксического анализа настроекDataStore. (Ia9e8f)
Версия 1.3.0-alpha10
29 июля 2026 г.
Выход androidx.datastore:datastore-*:1.3.0-alpha10. Версия 1.3.0-alpha10 содержит эти коммиты.
Изменения в API
GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration.(I26e56, b/514941919)
Версия 1.3.0-alpha09
6 мая 2026 г.
Выход androidx.datastore:datastore-*:1.3.0-alpha09. Версия 1.3.0-alpha09 содержит эти коммиты.
Изменения в API
- Сделайте
ReThrowCorruptionHandlerобщедоступным. (I137bb, b/427722902) - Сделайте жизненный цикл трассировки согласованным с трассировкой системы. (Ib391b)
Версия 1.3.0-alpha08
22 апреля 2026 г.
Выход androidx.datastore:datastore-*:1.3.0-alpha08. Версия 1.3.0-alpha08 содержит эти коммиты.
Новые функции
- Добавлена поддержка частной файловой системы источника (OPFS) в DataStore для веб-платформ. В этой реализации используется
WebOpfsStorage, а также реализована архитектурная поддержка асинхронного ввода-вывода файлов, уведомлений между вкладками с помощью APIBroadcastChannelи распределенной блокировки через нативныйWeb Locks APIдля эксклюзивного доступа на запись. Id7f5807 b/316376114
Изменения в API
- Добавлены API
WebLocalStorageиWebSessionStorageдля явного управления типом хранилища в веб-средах. I35fa259b b/316376114
Версия 1.3.0-alpha07
11 марта 2026 г.
Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha07". Версия 1.3.0-alpha07 содержит эти коммиты.
Новые функции
- Поддержка шифрования. Добавлен новый артефакт
androidx.datastore:datastore-tink, который обеспечивает поддержку шифрования хранилища данных с помощью библиотеки Tink. В этом модуле представлен классAeadSerializer– новый класс-оболочка, который реализуетSerializer<T>и использует аутентифицированное шифрование Tink с сопутствующими данными (AEAD) для шифрования и расшифровки данных.AeadSerializerможно использовать на целевых платформах JVM и Android. - Новый
DataStoreBuilder API. ПредставленDataStore.Builder<T>– масштабируемая альтернативаDataStoreFactory. С помощью нового API пользователи могут задавать собственную логику повреждения черезsetCorruptionHandler. Кроме того, APIBuilderтребует, чтобыDataStoreинициализировался с помощьюCoroutineContext, а неCoroutineScope. Это улучшает структурированный параллелизм, поскольку позволяет вызывающим объектам определять поведение выполнения (например, конкретные диспетчеры), не заставляяDataStoreненадлежащим образом управлять жизненным циклом области вызывающего объекта или быть связанным с ним.Примечание. Мы рекомендуем всем пользователям перейти с
DataStoreFactoryна новые APIDataStore.Builder. ТребуяCoroutineContextвместоCoroutineScope, API обеспечивает лучшую структурированную параллельность. Это гарантирует, что операции DataStore не будут привязаны к кратковременным жизненным циклам пользовательского интерфейса (например,viewModelScope), что предотвратит преждевременную отмену и потенциальную потерю данных.Предупреждение. Убедитесь, что у
CoroutineContext, предоставленного конструктору, естьJobи что он относится к приложению. Если контекст отменен, внутренние операцииDataStoreбудут завершены преждевременно.
Изменения в API
Добавлен новый артефакт
androidx.datastore:datastore-tinkдля поддержки шифрованияDataStore. (Ic106d, b/167697691)Чтобы зашифровать данные с помощью Tink, выполните следующие действия:
Создайте ключ с помощью Tink API:
val keysetHandle = AndroidKeysetManager.Builder() .withSharedPref(applicationContext, "keyset", "keyset_prefs") .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM)) .withMasterKeyUri("android-keystore://master_key") .build() .keysetHandleСоздайте
AeadSerializer, который будет упаковывать существующий сериализатор:val aeadSerializer = AeadSerializer( // Use tink APIs to create an Aead object to encrypt/decrypt data. aead = keysetHandle.getPrimitive( RegistryConfiguration.get(), Aead::class.java, ), // AeadSerializer can wrap an existing serializer. wrappedSerializer = ExistingSerializer, // Specify a unique name to prevent a ciphertext swapping attack. associatedData = "settings.json".encodeToByteArray(), )Используйте этот
aeadSerializerвместо сериализатора при создании экземпляра хранилища данных:val dataStore = dataStore( fileName = "settings.json", serializer = aeadSerializer, scope = scope, )
Представлен
DataStore.Builder<T>– современная масштабируемая альтернативаDataStoreFactory. (I3b110, b/267785821, b/400507108, b/368385681, b/427722902, b/370838564, b/167697691)
Версия 1.3.0-alpha06
25 февраля 2026 г.
Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha06". Версия 1.3.0-alpha06 содержит эти коммиты.
Новые функции
DataStoreтеперь поддерживаетandroidx.tracingна целевой платформе Android. Вы можете создатьDataStoreс трассировкой, передав экземплярandroidx.tracing.TracerфункцииDataStoreFactory.createWithTracing(). (I71bc2, b/427722902)
Версия 1.3.0-alpha05
28 января 2026 г.
Выход androidx.datastore:datastore-*:1.3.0-alpha05. Версия 1.3.0-alpha05 содержит эти коммиты.
Новые функции
- Базовые профили добавлены в хранилище данных. (3916245,b/469127532).
- Реализуйте поддержку WASM/JS в DataStore с помощью
localStorage. Это дает значительное преимущество по сравнению с существующей реализациейsessionStorage, поскольку позволяет получать уведомления о событиях и синхронизировать их между вкладками. (I67246, b/441511612)
Версия 1.3.0-alpha04
14 января 2026 г.
Выход androidx.datastore:datastore-*:1.3.0-alpha04. Версия 1.3.0-alpha04 содержит эти коммиты.
Изменения в API
- Добавлена служебная функция копирования, которую можно использовать для обновления данных в разделе "Настройки"
DataStore. (I70a18, b/467120382)
Исправленные ошибки
- Устранена проблема, из-за которой двоичные данные могли быть повреждены во время хранения. Для этого обработка строк UTF-8 была заменена кодировкой Base64 для веб-версии. (Ie3178, b/473790107)
Версия 1.3.0-alpha03
17 декабря 2025 г.
Выход androidx.datastore:datastore-*:1.3.0-alpha03. Версия 1.3.0-alpha03 содержит эти коммиты.
Исправление ошибок
- Исправлена ошибка, из-за которой не удавалось переименовать временный файл хранилища данных. (I94f89, b/203087070)
- Исправлена ошибка, из-за которой при одновременном чтении и записи могли теряться обновления. Между новым сборщиком в
DataStore.dataи параллельным вызовомupdateDataможет возникнуть состояние гонки, из-за чего сборщик пропустит новое значение. (I6a427, b/431787506)
Версия 1.3.0-alpha02
3 декабря 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha02". Версия 1.3.0-alpha02 содержит эти коммиты.
Исправленные ошибки
- Добавьте цель js() в
androidx.datastore. (I1f62b, b/441511612) - Принудительно использовать порядок FIFO в обновлениях
GuavaDataStore. (I6fd00,b/451491257)
Версия 1.3.0-alpha01
19 ноября 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha01". Версия 1.3.0-alpha01 содержит эти коммиты.
Новые функции
- Добавлена поддержка KMP Web в
DataStoreс помощьюsessionStorageAPI. Эта функция позволяетDataStoreвременно сохранять данные в одной вкладке браузера. (I60fad, b/316376114)
Версия 1.2
Версия 1.2.1
11 марта 2026 г.
Выход androidx.datastore:datastore-*:1.2.1. Версия 1.2.1 содержит эти коммиты.
Пользователь не внес никаких изменений
- В этом выпуске исправлены незначительные ошибки инфраструктуры. Изменений в Datastore API или поведении по сравнению с версией 1.2.0 нет.
Версия 1.2.0
19 ноября 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.2.0". Версия 1.2.0 содержит эти коммиты.
Основные изменения по сравнению с версией 1.1.0
Поддержка Java/Guava
- Добавлен новый модуль
datastore-guava, который предоставляет API, совместимые с Java и GuavaListenableFuture, черезGuavaDataStore. - В
GuavaDataStoreдобавлена поддержка нескольких процессов. - Добавлена перегрузка для
GuavaDataStore.from, которая принимает JavaExecutor(вместоCoroutineContext) и используетandroidx.core.util.Function.
Поддержка прямой загрузки
- Теперь поддерживается использование DataStore в режиме прямой загрузки. Новые API, такие как
createInDeviceProtectedStorage()вDataStoreFactoryиdeviceProtectedDataStore()вDataStoreDelegate, позволяют создавать DataStore в хранилище, защищенном устройством.
Изменения в хранилище и API
- Добавлен класс
PreferencesFileSerializer, который реализуетandroidx.datastore.core.Serializerдля использования сFileStorage. - Определен конструктор по умолчанию для
ReplaceFileCorruptionHandlerдля использования общего кода.
Исправленные ошибки
- Исправлена ошибка
java.lang.UnsatisfiedLinkErrorпри использованииDataStoreв приложении, оптимизированном с помощью R8, но не использующем стандартный файл ProGuard. - Исправлена ошибка, из-за которой операции
GuavaDataStoreмогли выполняться в вызывающем потоке (например, в основном потоке) вместо указанного диспетчера ввода-вывода. - Устранена проблема
FileNotFoundExceptionвOkioStorageпри запуске. Добавлена вторая попытка чтения данных в случае возникновения состояния гонки.
Версия 1.2.0-rc01
5 ноября 2025 г.
Выход androidx.datastore:datastore-*:1.2.0-rc01. Версия 1.2.0-rc01 содержит эти коммиты.
Версия 1.2.0-beta01
22 октября 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.2.0-beta01". Версия 1.2.0-beta01 содержит эти коммиты.
Изменения в API
- Сделать
CorruptionHandlerобщедоступным. (I9ac35, b/452406457) - Использовать аккаунт
androidx.core.util.Functionв приложении "GuavaDataStore". (I71eae, b/448563999) - Добавьте перегрузку для
GuavaDataStore.from, которая принимает Executor вместоCoroutineContext. (I989fa, b/448563183)
Исправленные ошибки
- Исправлена ошибка
java.lang.UnsatisfiedLinkErrorпри использованииDataStoreв приложении, оптимизированном с помощью R8, но не использующемgetDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293) - Исправлена ошибка, из-за которой операции
GuavaDataStoreмогли неправильно выполняться в вызывающем потоке (например, основном), а не в указанном диспетчере ввода-вывода. (Ic91ea,b/441801112)
Версия 1.2.0-alpha02
7 мая 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.2.0-alpha02". Версия 1.2.0-alpha02 содержит эти коммиты.
Изменения в API
- В
GuavaDataStoreдобавлена поддержка многопроцессного режима. (e0d608a). - Добавлен вспомогательный метод для создания
GuavaDataStoreизDataStore. (9af26f4) - Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии. (Idb6b5)
- Замените существующую перегрузку
datastoreметодом делегирования, чтобы инициализировать DataStore для использования во время прямой загрузки. (If71b9)
Версия 1.2.0-alpha01
26 марта 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.2.0-alpha01". Версия 1.2.0-alpha01 содержит эти коммиты.
Новые функции
- Добавлен модуль
datastore-guava, чтобы предоставить пользователям Java и GuavaListenableFutureудобные API черезGuavaDataStore. (Iadd5e0) - Теперь поддерживается использование приложения "
DataStore" в режиме "DirectBoot". Чтобы создать хранилище данных, которое будет использоваться в режиме прямого запуска, его нужно создать в хранилище, защищенном устройством. Для этого можно использовать новые APIDataStore:createInDeviceProtectedStorage()вDataStoreFactoryиdeviceProtectedDataStore()вDataStoreDelegate. (Ib90e56)
Изменения в API
- Добавлен
PreferencesFileSerializer, который реализует интерфейсandroidx.datastore.core.Serializerдля использования сFileStorage. (I4c71f3)
Исправление ошибок
- Устранена проблема
FileNotFoundExceptionвOkioStorageпри запуске. Добавлена вторая попытка чтения данных в случае возникновения состояния гонки. (I43b3fb, b/337870543) - Определен конструктор по умолчанию для
ReplaceFileCorruptionHandlerдля общего использования кода. (I795b05, b/358138957)
Версия 1.1
Версия 1.1.7
20 мая 2025 г.
Выход androidx.datastore:datastore-*:1.1.7. Версия 1.1.7 содержит эти коммиты.
Исправленные ошибки
- Исправлена проблема с отсутствием правил Proguard в артефакте Android
datastore-preferences-core. (3f3f6e, b/413078297)
Версия 1.1.6
7 мая 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.1.6". Версия 1.1.6 содержит эти коммиты.
Исправление ошибок
- Устранена проблема, из-за которой метаданные Gradle были повреждены в версии
1.1.5. Эта проблема была вызвана ошибкой в новом DSL-плагине AGP KMP, из-за которой метаданные для всех целевых платформ не включались автоматически. Из-за ошибки некоторые методы DataStore для Android больше не видны в сборках клиентов. Чтобы устранить проблему, используйте старый DSLandroidвbuild.gradleвместоandroidLibrary. (7801abf)
Версия 1.1.5
23 апреля 2025 г.
Выход androidx.datastore:datastore-*:1.1.5. Версия 1.1.5 содержит эти коммиты.
Исправленные ошибки
- Чтобы устранить проблемы с
CorruptionExceptionвPreferencesDataStore, хранилище по умолчанию было изменено сOkioStorageнаFileStorage. Для этого мы добавилиPreferencesFileSerializer. b/346197747
Версия 1.1.4
26 марта 2025 г.
Выход androidx.datastore:datastore-*:1.1.4. Версия 1.1.4 содержит эти коммиты.
Исправление ошибок
- Замените хранилище по умолчанию с
OkioStorageнаFileStorage, чтобы повысить надежность за счет сокращенияCorruptionException. (I71181, b/346197747)
Версия 1.1.3
26 февраля 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.1.3". Версия 1.1.3 содержит эти коммиты.
Исправленные ошибки
- Устранена проблема с
FileNotFoundExceptionвOkioStorage, возникавшая при запуске приложения. Если первая попытка чтения файла не удалась, будет предпринята вторая попытка на случай, если возникло состояние гонки из-за того, что файл был создан другим процессом во время первого чтения. (I43b3f, b/337870543)
Версия 1.1.2
15 января 2025 г.
Выход сингла "androidx.datastore:datastore-*:1.1.2". Версия 1.1.2 содержит эти коммиты.
Исправление ошибок
- Улучшение задержки чтения из кеша (
DataStore.data.first()) в 8 раз. (22b8a40) ReplaceFileCorruptionHandlerможно создать из общего кода KMP. (7632e839)
Версия 1.1.1
1 мая 2024 г.
Выход androidx.datastore:datastore-*:1.1.1. Версия 1.1.1 содержит эти коммиты.
Исправление ошибок
- Устранена ложная тревога в Linux, связанная с ошибкой "Resource deadlock would occur" (Возникнет взаимная блокировка ресурсов) в пограничном случае, когда несколько экземпляров
DataStoreпытаются выполнить запись из разных процессов, отменяя блокировку файла.
Версия 1.1.0
17 апреля 2024 г.
Выход androidx.datastore:datastore-*:1.1.0. Версия 1.1.0 содержит эти коммиты.
Основные изменения по сравнению с версией 1.0.0
Дополнительную информацию можно найти в примечаниях к выпуску альфа- и бета-версий 1.1.0. Вот некоторые из основных изменений в версии 1.1.0:
- Теперь DataStore поддерживает доступ нескольких процессов к одному файлу и наблюдаемость между процессами.
- Новый интерфейс Storage позволяет настраивать хранение и сериализацию моделей данных.
- Теперь вы можете использовать DataStore в проектах Kotlin Multiplatform.
Версия 1.1.0-rc01
3 апреля 2024 г.
Выход сингла "androidx.datastore:datastore-*:1.1.0-rc01". Версия 1.1.0-rc01 содержит эти коммиты.
Исправленные ошибки
- Исправлена проблема со снижением производительности, из-за которой вызовы
updateDataне оптимизировали запись на диск, если новые данные совпадали со старыми (d64cfb5). - Исправлено состояние гонки, из-за которого
MultiProcessDataStoreмог пропускать аннулирования во время инициализации. ((b/326141553),(094c2dd))
Версия 1.1.0-beta02
6 марта 2024 г.
Выход сингла "androidx.datastore:datastore-*:1.1.0-beta02". Версия 1.1.0-beta02 содержит эти коммиты.
Исправленные ошибки
- Улучшение производительности на
DataStoreсобирает уведомления об обновлениях, только когда оно наблюдается. (b/267792241)- Обратите внимание, что это изменение может вызвать
UncompletedCoroutinesErrorв ваших тестах, если вы используете библиотеку тестирования Coroutines. Чтобы избежать этой проблемы, при инициализацииDataStoreв тестах обязательно передавайтеTestScope.backgroundScope.
- Обратите внимание, что это изменение может вызвать
- Исправлена проблема, из-за которой вложенные вызовы
updateDataв одном экземпляре приводили к взаимоблокировке. (b/241760537) - Функция
DataStoreбольше не вызывает ошибкуIOExceptions, если не удается удалитьSharedPreferencesво время переноса. (b/195553816) - Исправлена ошибка, из-за которой не удавалось переименовать файл во время
updateDataв средах JVM, отличных от Android. (b/203087070) - Исправлена проблема, из-за которой
CorruptionExceptionне обрабатывался после инициализацииDataStore. (b/289582516)
Версия 1.1.0-beta01
10 января 2024 г.
Версия androidx.datastore:datastore-*:1.1.0-beta01 выпущена без изменений по сравнению с версией 1.1.0-alpha07. Версия 1.1.0-beta01 содержит следующие коммиты:
Версия 1.1.0-alpha07
29 ноября 2023 г.
Выход androidx.datastore:datastore-*:1.1.0-alpha07. Версия 1.1.0-alpha07 содержит эти коммиты.
Изменения в API
- Методы
MultiProcessDataStoreFactoryбольше не экспериментальные.Аннотация@ExperimentalMultiProcessDataStoreудалена. (Ieee54, I8e607)
Исправленные ошибки
- Удаление аннотаций
@ExperimentalMultiProcessDataStoreв версии 1.1.0-alpha07. (I8e607)
Версия 1.1.0-alpha06
1 ноября 2023 г.
Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha06". Версия 1.1.0-alpha06 содержит эти коммиты.
Изменения в API
- Теперь фабричный метод
createSingleProcessCoordinatorполучает путь к файлу (String,java.io.Fileиokio.Path), чтобы обеспечить совместимость сcreateMultiProcessCoordinator. (I211c8, b/305755935)
Версия 1.1.0-alpha05
6 сентября 2023 г.
Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha05". Версия 1.1.0-alpha05 содержит следующие коммиты:
Изменения в API
- Хранилище данных
FileStorageтеперь общедоступно, поэтому клиенты могут указывать собственные параметры. (Icb985) - Конструктор
OkioStorageтеперь принимаетInterProcessCoordinator, чтобы его можно было использовать на устройствах Android сMultiProcessCoordinator. (Iecea3)
Исправление ошибок
- Исправлена ошибка, из-за которой
MultiProcessCoordinatorне мог отслеживать несколько файлов в одном каталоге. - Исправлена ошибка, из-за которой не удавалось обнаружить повторяющиеся файлы, если пути к ним не были нормализованы.
- Исправьте неверные значения, возвращаемые из
RxDataStore#isDisposed. - Исправьте отсутствующую конфигурацию ProGuard для артефакта
datstore-preferences-core.
Версия 1.1.0-alpha04
5 апреля 2023 г.
Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha04". Версия 1.1.0-alpha04 содержит эти коммиты.
Исправленные ошибки
- Улучшена внутренняя реализация, чтобы избежать состояния гонки, при котором поток данных
DataStoreможет выдать более старое значение после обновления.
Версия 1.1.0-alpha03
24 марта 2023 г.
Выход androidx.datastore:datastore-*:1.1.0-alpha03.
Исправление ошибок
- Удалены ограничения зависимостей из артефактов Maven, чтобы обойти проблему со сборкой в Kotlin Native Targets (b/274786186, KT-57531).
Версия 1.1.0-alpha02
22 марта 2023 г.
Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha02". Версия 1.1.0-alpha02 содержит эти коммиты.
Примечание
Обратите внимание, что эта версия включает важный внутренний рефакторинг, который объединяет реализации для однопроцессных и многопроцессных реализаций DataStore. Обратите внимание на возможные непредвиденные изменения в работе (например, в сроках уведомлений об обновлениях). Сообщить о таких изменениях можно с помощью системы отслеживания ошибок.
Новые функции
- Теперь вы можете использовать
DataStoreв проектах KMM. Обратите внимание, что версии DataStore для других платформ, кроме Android, пока находятся на стадии эксперимента, но мы решили объединить версии, чтобы разработчикам было проще их попробовать. - Функции, связанные с несколькими процессами, перенесены из
androidx.datastore.multiprocessвandroidx.datastore.core. - Добавьте новый фабричный метод в
androidx.datastore.core.MultiProcessDataStoreFactory, чтобы создавать экземпляры DataStore с объектамиStorageдля операций с файлами. - Добавлен новый интерфейс
InterProcessCoordinator, который помогает нескольким экземплярам DataStore взаимодействовать между процессами. Обратите внимание, что многопроцессная реализацияInterProcessCoordinatorдоступна только на Android.
Изменения в API
- Добавление
InterProcessCoordinatorвStorageConnectionв интерфейсе datastore-core (I555bb) - Измените API в datastore-core
MultiProcessDataStoreFactory, чтобы использовать Storage. (Iac02f) - Перенос общедоступных API из datastore-multiprocess в datastore-core (I76d7c)
- Обнаружена ошибка
PreferencesSerializerв datastore-preferences-core (I4b788) - Добавление аннотации
@JvmDefaultWithCompatibility(I8f206)
Версия 1.1.0-alpha01
9 ноября 2022 г.
Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha01". Версия 1.1.0-alpha01 содержит эти коммиты.
Новые функции
- Поддержка многопроцессных сценариев использования, в которых обеспечивается согласованность данных между экземплярами
DataStoreв разных процессах. ДобавьтеMultiProcessDataStoreFactory#create, чтобы создать такие экземплярыDataStore. - Новый интерфейс хранилища, который позволяет переключаться между разными механизмами хранения для
Datastore. Предоставляются реализации для java.io и okio.DataStoreтеперь имеют новые методы, которые принимают объект Storage.
Изменения в API
- Измените API в datastore-core
MultiProcessDataStoreFactory, чтобы использовать Storage. (Iac02f) - Перенос общедоступных API из datastore-multiprocess в datastore-core (I76d7c)
- Добавлен класс
PreferencesSerializerиз datastore-preferences-core (I4b788).
Версия 1.0.0
Версия 1.0.0
4 августа 2021 г.
Выход сингла "androidx.datastore:datastore-*:1.0.0". Версия 1.0.0 содержит эти коммиты.
Основные функции версии 1.0.0
Jetpack DataStore – это решение для хранения данных, которое позволяет сохранять пары "ключ-значение" или типизированные объекты с буферами протоколов. DataStore использует сопрограммы Kotlin и Flow для асинхронного, согласованного и транзакционного хранения данных.
Версия 1.0.0-rc02
21 июля 2021 г.
Выход сингла "androidx.datastore:datastore-*:1.0.0-rc02". Версия 1.0.0-rc02 содержит следующие коммиты:
Исправление ошибок
- Уточните, что
SharedPreferencesMigrationне выполняется, если нет ключей. (Icfa32, b/192824325) - Исправлена ошибка, из-за которой
SharedPreferencesMigration, созданный с помощьюMIGRATE_ALL_KEYS, выдавал исключение, если запрашиваемый ключ ещё не существовал. (Ie318a, b/192824325)
Версия 1.0.0-rc01
30 июня 2021 г.
Выход сингла "androidx.datastore:datastore-*:1.0.0-rc01". Версия 1.0.0-rc01 содержит эти коммиты.
Исправленные ошибки
- Исправлена ошибка, из-за которой файл .java непреднамеренно добавлялся в конечный JAR-файл (I65d96, b/188985637).
Версия 1.0.0-beta02
16 июня 2021 г.
Выход сингла "androidx.datastore:datastore-*:1.0.0-beta02". Версия 1.0.0-beta02 содержит следующие коммиты:
Исправленные ошибки
- Исправить
ClassVerificationFailure(b/187450483)
Версия 1.0.0-beta01
21 апреля 2021 г.
Выход сингла "androidx.datastore:datastore-*:1.0.0-beta01". Версия 1.0.0-beta01 содержит следующие коммиты:
Изменения в API
- Удалены перегрузки JVM для методов, предназначенных только для Kotlin (I2adc7).
Исправленные ошибки
- Исправлена ошибка, из-за которой делегаты хранилища данных могли приводить к утечке контекстов (Ie96fc, b/184415662).
Версия 1.0.0-alpha08
10 марта 2021 г.
Выход сингла "androidx.datastore:datastore-*:1.0.0-alpha08". Версия 1.0.0-alpha08 содержит следующие коммиты:
Изменения в API
- Теперь вы можете добавить в делегат свойств
dataStoreиpreferencesDataStoreперенос, зависящий от контекста. (I4ef69, b/173726702) - Добавлены вспомогательные функции для получения названия файла, если вы больше не используете делегат хранилища данных или context.createDataStore (I60f9a).
- Функции writeTo и readFrom сериализатора теперь приостанавливаются. Если вы реализовали Serializer, вам нужно будет обновить функции, чтобы они стали функциями приостановки. (I1e58e)
- Добавлены делегаты свойств для пользователей RxDataStore. Ied768, b/173726702
Исправленные ошибки
- Принудительно применяются ограничения на публичное использование экспериментальных API (I6aa29, b/174531520).
Версия 1.0.0-alpha07
24 февраля 2021 г.
Выход сингла "androidx.datastore:datastore-*:1.0.0-alpha07". Версия 1.0.0-alpha07 содержит следующие коммиты:
Изменения в API
Функция расширения
Context.createDataStoreудалена и заменена делегатом свойства globalDataStore. Вызовите globalDataStore один раз на верхнем уровне в файле kotlin. Пример:val Context.myDataStore by dataStore(...)Добавьте этот код в файл Kotlin на верхнем уровне, чтобы у вас был только один экземпляр. (I57215, b/173726702)
Функции RxDataStore теперь находятся в классе RxDataStore, а не в функциях расширения DataStore. (Idccdb, b/177691248)
Если вы хотите перенести EncryptedSharedPreferences (или SharedPreferences с прямой загрузкой) в DataStore, теперь вы можете сделать это с помощью нового конструктора SharedPreferencesMigration, который позволяет внедрять SharedPreferences. (I8e04e, b/177278510)
Исправленные ошибки
- Теперь DataStore будет выдавать исключение, если для одного файла есть несколько активных хранилищ данных. Если вы не управляли хранилищем данных как объектом Singleton или не следили за тем, чтобы для файла одновременно не были активны два экземпляра хранилища данных, то теперь при чтении или записи в хранилище данных могут возникать исключения. Эту проблему можно решить, если управлять DataStore как объектом Singleton. (Ib43f4, b/177691248)
- Исправлено поведение при отмене, когда отменяется область вызывающего объекта. (I2c7b3)
Версия 1.0.0-alpha06
13 января 2021 г.
Выход androidx.datastore:datastore-*:1.0.0-alpha06. Версия 1.0.0-alpha06 содержит следующие коммиты.
Новые функции
- Добавлены оболочки RxJava для DataStore. Артефакты
datastore-rxjava2/3содержат оболочки для основных API DataStore (RxDataStore,RxDataStoreBuilderиRxDataMigration). Артефактыdatastore-preferences-rxjava2/3содержат конструктор для создания Preferences DataStore.
Изменения в API
- Скрыть интерфейс CorruptionHandler. Не было причин делать его общедоступным, поскольку фабрика DataStore принимает только ReplaceFileCorruptionHandler. (I0b3b3, b/176032264)
- Метод
preferencesKey<T>(name: String): Key<T>был удален и заменен методами, относящимися к каждому поддерживаемому типу. Например, методpreferencesKey<Int>("int")теперь называетсяintPreferencesKey("int")(Ibcfac, b/170311106).
Исправленные ошибки
- Исправлена документация по DataStoreFactory, в которой не было указано, что файл хранилища данных создается в подкаталоге datastore/. (Ica222)
Версия 1.0.0-alpha05
2 декабря 2020 г.
Выход androidx.datastore:datastore-*:1.0.0-alpha05. Версия 1.0.0-alpha05 содержит эти коммиты.
Исправление ошибок
- Добавьте более подробную документацию и исключения, связанные с одновременной записью из хранилищ данных. (Ia98a2, b/173522155, b/173726702)
- Теперь мы разрешаем (но не требуем) закрывать OutputStream, переданный в
Serializer.writeTo(). (I5c9bf, b/173037611)
Версия 1.0.0-alpha04
17 ноября 2020 г.
Выход сингла "androidx.datastore:datastore-*:1.0.0-alpha04". Версия 1.0.0-alpha04 содержит следующие коммиты:
Исправление ошибок
- Исправлена проблема с упаковкой, которая вызывала следующий сбой в Preference Datastore
1.0.0-alpha03:java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences- Первое сообщение о сбое: b/173036843.
- (I4712d, b/173036843)
Версия 1.0.0-alpha03
11 ноября 2020 г.
Выход androidx.datastore:datastore-*:1.0.0-alpha03. Версия 1.0.0-alpha03 содержит эти коммиты.
Новые функции
- В Preferences теперь поддерживаются значения double, что полезно, если вам нужна более высокая точность, чем у float (I5be8f, b/169471808).
Изменения в API
- Создана зависимость Kotlin для хранилища данных, чтобы ускорить компиляцию.
androidx.datastore:datastore-coreсодержит только основные API Kotlin, аandroidx.datastore:datastore– API, зависящие от Android (включаяSharedPreferencesMigrationи конструкторContext.createDataStore). (I42d75, b/168512698) - Разделение целей для хранилища данных настроек, чтобы ускорить компиляцию Kotlin (Ia3c19).
Теперь сериализаторам требуется новое свойство для значения по умолчанию, которое будет использоваться, если на диске нет данных. Это упрощает реализацию пользовательских сериализаторов, поскольку пользователям не нужно обрабатывать пустые входные потоки (пустые входные потоки не анализируются с помощью JSON).
- Также теперь проверяется, не закрыт ли выходной поток, предоставленный writeTo(). Если он закрыт, выдаются исключения (I16e29).
Конструктор SharedPreferencesView стал внутренним. Изначально он был общедоступным, чтобы можно было проводить тестирование. Вместо этого в тестах следует создавать объект SharedPreferencesMigration и проверять его. (I93891)
Исправление ошибок
- Параметр
produceFileвDataStoreFactoryиPreferenceDataStoreFactoryтеперь является последним в списке, поэтому вы можете использовать лямбда-синтаксис Kotlin. (Ibe7f1, b/169425442) - Добавлены новые требования к явному API для Kotlin (I5ae1e).
Известные проблемы
- Preference Datastore аварийно завершает работу с ошибкой
java.lang.NoClassDefFoundError. (b/173036843)
Версия 1.0.0-alpha02
14 октября 2020 г.
Выход сингла androidx.datastore:datastore-core:1.0.0-alpha02 и альбома androidx.datastore:datastore-preferences:1.0.0-alpha02. Версия 1.0.0-alpha02 содержит эти коммиты.
Исправленные ошибки
- Добавлена защита от мутации в datastore-core. Изменение нарушает использование хранилища данных для тех, кто использует его с типами, отличными от proto и preferences (I6aa84).
- В Preferences.kt добавлен метод
toString, чтобы упростить отладку текущего состояния (I96006). - Добавлено исключение для защиты от недопустимого использования
DataStore.Preferences(I1134d). - Исправлена ошибка, из-за которой приложение аварийно завершало работу при запуске (I69237, b/168580258).
Версия 1.0.0-alpha01
2 сентября 2020 г.
Выход сингла androidx.datastore:datastore-core:1.0.0-alpha01 и альбома androidx.datastore:datastore-preferences:1.0.0-alpha01. Версия 1.0.0-alpha01 содержит эти коммиты.
Новые функции
Jetpack DataStore – это новое улучшенное решение для хранения данных, которое должно заменить SharedPreferences. DataStore, созданный на основе сопрограмм и потоков Kotlin, предлагает две реализации:
- Proto DataStore, позволяющий хранить типизированные объекты (на основе буферов протоколов).
- Preferences DataStore, в котором хранятся пары "ключ-значение".
Данные хранятся асинхронно, согласованно и транзакционно, что позволяет преодолеть большинство недостатков SharedPreferences.