Хранилище данных
| Последнее обновление | Стабильный релиз | Предварительная версия релиза | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 17 декабря 2025 г. | 1.2.0 | - | - | 1.3.0-alpha03 |
Объявление зависимостей
Чтобы добавить зависимость от DataStore, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .
DataStore предоставляет различные варианты сериализации , выберите один из них. Вы также можете добавить зависимости, не требующие Android, в любую из реализаций.
Добавьте зависимости для необходимой реализации в файл build.gradle вашего приложения или модуля:
Настройки хранилища данных
Добавьте следующие строки в раздел зависимостей вашего файла Gradle:
Круто
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.0" }
Котлин
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.2.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.2.0") }
Чтобы добавить дополнительную поддержку RxJava, добавьте следующие зависимости:
Круто
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.2.0" }
Котлин
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.2.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.2.0") }
Хранилище данных
Добавьте следующие строки в раздел зависимостей вашего файла Gradle:
Круто
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.0" }
Котлин
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.2.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.2.0") }
Добавьте следующие необязательные зависимости для поддержки RxJava:
Круто
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.0" }
Котлин
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.0") }
Для сериализации контента добавьте зависимости для Protocol Buffers или сериализации 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" }
Котлин
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") } } } }
Котлин
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-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 содержит следующие коммиты .
Новые функции
- В
DataStoreдобавлена поддержка KMP Web с использованием APIsessionStorage. Эта функция позволяетDataStoreвременно сохранять данные в рамках одной вкладки браузера. ( I60fad , b/316376114 )
Версия 1.2
Версия 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методом делегата для инициализации хранилища данных, которое будет использоваться при прямой загрузке. ( 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 по поводу ошибки "Возможна взаимоблокировка ресурсов" в частном случае, когда несколько экземпляров
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 поддерживает одновременный доступ нескольких процессов к одному и тому же файлу, а также обеспечивает возможность мониторинга между процессами.
- Новый интерфейс «Хранилище» позволяет настраивать способ хранения или сериализации ваших моделей данных.
- Теперь вы можете использовать DataStore в многоплатформенных проектах Kotlin.
Версия 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. Убедитесь, что вы передаетеTestScope.backgroundScopeпри инициализацииDataStoreв ваших тестах, чтобы избежать этой проблемы.
- Обратите внимание, что это изменение может вызвать
- Исправлена проблема взаимоблокировки при вложенных вызовах
updateDataна одном и том же экземпляре. ( b/241760537 ) - Теперь
DataStoreбольше не выдаетIOExceptionsв случае неудачного удаленияSharedPreferencesво время миграции. ( b/195553816 ) - Исправлена ошибка, из-за которой переименование файлов завершалось с ошибкой во время
updateDataв средах, отличных от Android JVM. ( 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 )
Исправлены ошибки
- В версии 1.1.0-alpha07 внесено изменение, касающееся удаления аннотаций
@ExperimentalMultiProcessDataStore. ( 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в проектах 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 в
MultiProcessDataStoreFactoryв datastore-core для использования хранилища. ( 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 в
MultiProcessDataStoreFactoryв datastore-core для использования хранилища. ( 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 — это решение для хранения данных, позволяющее хранить пары ключ-значение или типизированные объекты с помощью протокола Protocol Buffers. 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 теперь приостанавливаются. Если вы реализовали сериализатор, вам необходимо обновить ваши функции, сделав их приостанавливаемыми. ( 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. Если вы не управляли DataStore как синглтоном или не обеспечивали одновременное отсутствие двух активных экземпляров DataStore для одного файла, то при чтении или записи в DataStore могут возникать исключения. Это можно исправить, управляя DataStore как синглтоном. ( 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.
Изменения в 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 содержит следующие коммиты.
Новые функции
- В настройках теперь поддерживаются значения типа double (что полезно, если вам нужна более высокая точность, чем у чисел с плавающей запятой) ( I5be8f , b/169471808 ).
Изменения в API
- Создана чистая Kotlin-зависимость для datastore, чтобы ускорить компиляцию.
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. Мутации нарушают работу datastore для пользователей, использующих datastore с типами, отличными от 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. Созданное на основе корутин Kotlin и Flow, DataStore предлагает две различные реализации:
- Proto DataStore — это хранилище типизированных объектов (с поддержкой протокола Protocol Buffers ).
- Настройки хранилища данных (Preferences DataStore), в котором хранятся пары ключ-значение.
Данные хранятся асинхронно, согласованно и транзакционно, что позволяет преодолеть большинство недостатков SharedPreferences.