Хранилище данных

Хранение данных осуществляется асинхронно, согласованно и транзакционно, что позволяет преодолеть некоторые недостатки SharedPreferences.
Последнее обновление Стабильный релиз Предварительная версия релиза Бета-версия Альфа-версия
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 с использованием API sessionStorage . Эта функция позволяет 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 и Guava ListenableFuture через GuavaDataStore .
  • Добавлена ​​поддержка многопроцессной обработки в GuavaDataStore .
  • Добавлена ​​перегрузка метода GuavaDataStore.from , которая принимает Java Executor (вместо 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 и Guava ListenableFuture через GuavaDataStore . ( Iadd5e0 )
  • Теперь поддерживается использование DataStore в режиме DirectBoot . Для создания хранилища данных, используемого в режиме прямой загрузки, его необходимо создать в защищенном хранилище устройства. Этого можно добиться с помощью следующих новых API DataStore : 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 больше не отображались в сборках клиентов. Исправление заключается в использовании старого DSL android в 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 ).
  • Исправлена ​​ошибка состояния гонки, из-за которой MultiProcess DataStore мог пропускать аннулирования во время инициализации. (( 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

Версия 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.