Хранилище данных
| Последнее обновление | Стабильный релиз | Предварительная версия релиза | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 11 марта 2026 г. | 1.2.1 | - | - | 1.3.0-alpha07 |
Объявление зависимостей
Чтобы добавить зависимость от DataStore, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .
DataStore предоставляет различные варианты сериализации , выберите один из них. Вы также можете добавить зависимости, не требующие Android, в любую из реализаций.
Добавьте зависимости для необходимой реализации в файл build.gradle вашего приложения или модуля:
Хранилище данных настроек
Добавьте следующие строки в раздел зависимостей вашего 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" }
Котлин
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" }
Котлин
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") }
Хранилище данных
Добавьте следующие строки в раздел зависимостей вашего 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" }
Котлин
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" }
Котлин
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.1") }
Для сериализации содержимого добавьте зависимости либо для 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-alpha07
11 марта 2026 г.
Выпущена версия androidx.datastore:datastore-*:1.3.0-alpha07 . Версия 1.3.0-alpha07 содержит следующие коммиты .
Новые функции
- Поддержка шифрования: Представлен новый артефакт
androidx.datastore:datastore-tink, который обеспечивает поддержку шифрования вашего хранилища данных с использованием библиотеки Tink . Этот модуль представляетAeadSerializer— новый класс-обертку, реализующий интерфейсSerializer<T>и использующий аутентифицированное шифрование с ассоциированными данными (AEAD) Tink для шифрования и расшифровки данных.AeadSerializerдоступен для использования на целевых платформах JVM и Android. - Новый API для
DataStoreBuilder: представленDataStore.Builder<T>в качестве масштабируемой альтернативыDataStoreFactory. Благодаря этому новому API пользователи теперь могут предоставлять собственную логику обработки ошибок с помощьюsetCorruptionHandler. Кроме того, APIBuilderтребует, чтобыDataStoreинициализировался с использованиемCoroutineContextвместоCoroutineScope, что является улучшением для структурированной параллельной обработки, поскольку позволяет вызывающим сторонам определять поведение выполнения (например, конкретные диспетчеры) безDataStoreненадлежащим образом управлять жизненным циклом области видимости вызывающей стороны или быть привязанным к нему.Примечание: Мы рекомендуем всем пользователям перейти с
DataStoreFactoryна новые APIDataStore.Builder. ТребуяCoroutineContextвместоCoroutineScope, API обеспечивает более структурированную параллельную обработку. Это гарантирует, что операции DataStore не будут привязаны к коротким жизненным циклам пользовательского интерфейса (например,viewModelScope), предотвращая преждевременную отмену и потенциальную потерю данных.Предупреждение: Убедитесь, что
CoroutineContextпредоставленный Builder, имеетJobи что он имеет область действия приложения. Если контекст будет отменен, внутренние операцииDataStoreбудут преждевременно завершены.
Изменения в API
Introduced the new
androidx.datastore:datastore-tinkartifact forDataStoreencryption support. ( Ic106d , b/167697691 )Для шифрования данных с помощью Tink выполните следующие действия:
Создайте ключ, используя API Tink:
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 )
Исправлены ошибки
- Resolved an issue where binary data could be malformed during storage by replacing UTF-8 string handling with Base64 encoding for Web. ( 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 содержит следующие коммиты .
Новые функции
- В
DataStoreдобавлена поддержка KMP Web с использованием APIsessionStorage. Эта функция позволяетDataStoreвременно сохранять данные в рамках одной вкладки браузера. ( I60fad , b/316376114 )
Версия 1.2
Версия 1.2.1
11 марта 2026 г.
Выпущена версия androidx.datastore:datastore-*:1.2.1 . Версия 1.2.1 содержит следующие коммиты .
Версия 1.2.0
19 ноября 2025 г.
androidx.datastore:datastore-*:1.2.0 is released. Version 1.2.0 contains these commits .
Значительные изменения с момента выхода версии 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.
Исправлены ошибки:
- Fixed
java.lang.UnsatisfiedLinkErrorwhen usingDataStorein an app optimized with R8 but not using the standard ProGuard file. - Исправлена ошибка, из-за которой операции
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 ) - Use
androidx.core.util.FunctioninGuavaDataStore. ( I71eae , b/448563999 ) - Add an overload for
GuavaDataStore.fromthat takes in an Executor instead of aCoroutineContext. ( 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
- Added multiprocess support in
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 содержит следующие коммиты .
Исправлены ошибки
- Improve warm read latency (
DataStore.data.first()) by 8x. ( 22b8a40 ) -
ReplaceFileCorruptionHandlercan be created from KMP common code. ( 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 is released. Version 1.1.0 contains these commits .
Значительные изменения с момента выхода версии 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 is released. Version 1.1.0-rc01 contains these commits .
Исправлены ошибки
- Fixed the performance degradation where
updateDatacalls didn't optimize on disk writes if the new data is the same as the old data ( 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
-
MultiProcessDataStoreFactorymethods are no longer experimental.The@ExperimentalMultiProcessDataStoreannotation has been removed entirely. ( 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
FileStorageis publicly available now, so clients can provide custom params. ( Icb985 ) - Изменен конструктор
OkioStorage, теперь он принимаетInterProcessCoordinator, что позволяет использовать его на Android сMultiProcessCoordinator. ( Iecea3 )
Исправлены ошибки
- Исправлена ошибка, из-за которой
MultiProcessCoordinatorне мог отслеживать несколько файлов в одной директории. - Исправлена ошибка, из-за которой не удавалось обнаружить дубликаты файлов, если пути к файлам не нормализованы.
- Fix wrong values returned from
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 .
Исправлены ошибки
- Removed dependency constraints from Maven artifacts to workaround a build problem in 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
- Add
InterProcessCoordinatortoStorageConnectionin datastore-core interface ( I555bb ) - Измените API в
MultiProcessDataStoreFactoryв datastore-core для использования хранилища. ( Iac02f ) - Move public APIs in datastore-multiprocess to datastore-core ( I76d7c )
- Exposed
PreferencesSerializerfrom datastore-preferences-core ( I4b788 ) - Adding
@JvmDefaultWithCompatibilityannotation ( I8f206 )
Версия 1.1.0-alpha01
9 ноября 2022 г.
androidx.datastore:datastore-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.
Новые функции
- Support multi-process use cases where data consistency is guaranteed among
DataStoreinstances across processes. AddMultiProcessDataStoreFactory#createto create suchDataStoreinstances. - Новый интерфейс 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 is released. Version 1.0.0-rc01 contains these commits.
Исправлены ошибки
- Исправлена ошибка, из-за которой файл .java был непреднамеренно добавлен в итоговый jar-файл ( I65d96 , b/188985637 ).
Версия 1.0.0-beta02
16 июня 2021 г.
androidx.datastore:datastore-*:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.
Исправлены ошибки
- Исправление
ClassVerificationFailure( b/187450483 )
Версия 1.0.0-beta01
21 апреля 2021 г.
androidx.datastore:datastore-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.
Изменения в API
- Удалить перегрузки JVM для методов, предназначенных только для Kotlin ( I2adc7 )
Исправлены ошибки
- Fixed a bug where datastore delegates could result in leaking contexts ( 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 )
- Serializer writeTo and readFrom are now suspending. If you have implemented a Serializer, you will need to update your functions to be suspend functions. ( I1e58e )
- Добавлены делегаты свойств для пользователей RxDataStore. ( Ied768 , b/173726702 )
Исправлены ошибки
- Ввести ограничения на публичное использование экспериментальных API ( I6aa29 , b/174531520 )
Версия 1.0.0-alpha07
24 февраля 2021 г.
androidx.datastore:datastore-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.
Изменения в 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 is released. Version 1.0.0-alpha03 contains these commits.
Новые функции
- В настройках теперь поддерживаются значения типа 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 содержит следующие коммиты.
Исправлены ошибки
- Added a safeguard against mutation in datastore-core. Mutation breaks datastore usage for people using datastore with non-proto/non-preferences types ( I6aa84 )
- В файл Preferences.kt добавлен метод
toStringдля упрощения отладки текущего состояния ( I96006 ). - Added an exception to safeguard against misuse of
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 is a new and improved data storage solution aimed at replacing SharedPreferences. Built on Kotlin coroutines and Flow, DataStore provides two different implementations:
- Proto DataStore — это хранилище типизированных объектов (с поддержкой протокола Protocol Buffers ).
- Настройки хранилища данных (Preferences DataStore), в котором хранятся пары ключ-значение.
Данные хранятся асинхронно, согласованно и транзакционно, что позволяет преодолеть большинство недостатков SharedPreferences.