DataStore
| Последнее обновление | Основная версия | Релиз-кандидат | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 21 октября 2026 г. | 1.3.0 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от DataStore, необходимо добавить в проект репозиторий Google Maven. Подробную информацию можно найти в статье Репозиторий Google Maven.
DataStore предоставляет разные варианты сериализации. Выберите один из них. Вы также можете добавить зависимости, не связанные с Android, в любую реализацию.
Добавьте зависимости для нужной реализации в файл build.gradle приложения или модуля:
Preferences DataStore
Добавьте в раздел зависимостей файла gradle следующие строки:
Яркий
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.3.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.3.0" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.3.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.3.0") }
Чтобы добавить поддержку RxJava, добавьте следующие зависимости:
Яркий
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.3.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.3.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.3.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.3.0") }
DataStore
Добавьте в раздел зависимостей файла gradle следующие строки:
Яркий
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.3.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.3.0" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.3.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.3.0") }
Добавьте следующие необязательные зависимости для поддержки RxJava:
Яркий
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.3.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.3.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.3.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.3.0") }
Чтобы сериализовать контент, добавьте зависимости для буферов протокола или сериализации 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
21 октября 2026 г.
Выпущены данные "androidx.datastore:datastore-*:1.3.0". Версия 1.3.0 содержит эти коммиты.
Важные изменения по сравнению с версией 1.2.0:
Новые возможности
Поддержка веб-хранилища. Добавлены варианты веб-хранилища KMP, обеспечивающие гибкое сохранение данных в веб-целях.
sessionStorage(WebSessionStorage). Позволяет временно хранить данные в одной вкладке браузера.localStorage(WebLocalStorage). Включает постоянное хранилище с уведомлениями о событиях и синхронизацией между вкладками.- Origin Private File System (
WebOpfsStorage). Поддержка файловой системы через OPFS с асинхронным вводом-выводом файлов и уведомлениями между вкладками.
Поддержка шифрования (
datastore-tink). Добавлен новый артефактandroidx.datastore:datastore-tink, который обеспечивает поддержку шифрования с помощью библиотеки Tink. В нем используетсяAeadSerializerдля шифрования и расшифровки данных с помощью аутентифицированного шифрования со связанными данными (AEAD).Поддержка трассировки. Добавлена поддержка
androidx.tracingна целевой платформе Android.DataStore.BuilderAPI. ПредставленDataStore.Builder<T>– современная масштабируемая альтернативаDataStoreFactory. Для улучшения структурированного параллелизма требуетсяCoroutineContextвместоCoroutineScope.Профили базовой конфигурации. В
datastoreдобавлены профили базовой конфигурации, чтобы повысить производительность при запуске.
Изменения в API
- API
DataStore.Builder,ReThrowCorruptionHandlerиInterProcessCoordinatorобновлены до версииpublic.
Исправление ошибок и улучшения
В сообщения
CorruptionExceptionдобавлена информация о пути к файлу, чтобы упростить отладку при ошибках синтаксического анализа.Исправлена потенциальная потеря данных в
GuavaDataStoreза счет применения строгого порядка FIFO для обновлений.
Версия 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 содержит эти коммиты.
Новые функции
- Добавлена поддержка Origin Private File System (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, предоставленного Builder, есть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, который позволяет пользователям Java и GuavaListenableFutureработать с API черезGuavaDataStore. - Добавлена поддержка многопроцессности в
GuavaDataStore. - Добавлена перегрузка для
GuavaDataStore.from, которая принимает JavaExecutor(вместоCoroutineContext) и используетandroidx.core.util.Function.
Поддержка режима Direct Boot.
- Теперь поддерживается использование 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, который предоставляет API, совместимые с Java и GuavaListenableFuture, через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
- Datastore
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. - Новый интерфейс Storage, который позволяет переключать базовый механизм хранения для
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 будет выдавать исключение, если для одного файла есть несколько активных хранилищ данных. Если вы не управляли DataStore как Singleton или не обеспечивали, чтобы для файла не были одновременно активны два экземпляра DataStore, то теперь при чтении или записи в DataStore могут возникать исключения. Чтобы устранить эти проблемы, управляйте 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 и Flow и предоставляет две разные реализации:
- Proto DataStore, которое позволяет хранить типизированные объекты (на основе буферов протокола).
- Preferences DataStore, который хранит пары "ключ-значение".
Данные хранятся асинхронно, последовательно и транзакционно, что позволяет преодолеть большинство недостатков SharedPreferences.