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

Хранение данных осуществляется асинхронно, согласованно и транзакционно, что позволяет преодолеть некоторые недостатки SharedPreferences.
Последнее обновление Стабильный релиз Предварительная версия релиза Бета-версия Альфа-версия
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 для DataStore Builder: представлен DataStore.Builder<T> в качестве масштабируемой альтернативы DataStoreFactory . Благодаря этому новому API пользователи теперь могут предоставлять собственную логику обработки ошибок с помощью setCorruptionHandler . Кроме того, API Builder требует, чтобы DataStore инициализировался с использованием CoroutineContext вместо CoroutineScope , что является улучшением для структурированной параллельной обработки, поскольку позволяет вызывающим сторонам определять поведение выполнения (например, конкретные диспетчеры) без DataStore ненадлежащим образом управлять жизненным циклом области видимости вызывающей стороны или быть привязанным к нему.

    Примечание: Мы рекомендуем всем пользователям перейти с DataStoreFactory на новые API DataStore.Builder . Требуя CoroutineContext вместо CoroutineScope , API обеспечивает более структурированную параллельную обработку. Это гарантирует, что операции DataStore не будут привязаны к коротким жизненным циклам пользовательского интерфейса (например, viewModelScope ), предотвращая преждевременную отмену и потенциальную потерю данных.

    Предупреждение: Убедитесь, что CoroutineContext предоставленный Builder, имеет Job и что он имеет область действия приложения. Если контекст будет отменен, внутренние операции DataStore будут преждевременно завершены.

Изменения в API

  • Introduced the new androidx.datastore:datastore-tink artifact for DataStore encryption support. ( Ic106d , b/167697691 )

    Для шифрования данных с помощью Tink выполните следующие действия:

    1. Создайте ключ, используя API Tink:

      val keysetHandle =
          AndroidKeysetManager.Builder()
              .withSharedPref(applicationContext, "keyset", "keyset_prefs")
              .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM))
              .withMasterKeyUri("android-keystore://master_key")
              .build()
              .keysetHandle
      
    2. Создайте компонент 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(),
      )
      
    3. Используйте 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 с использованием API sessionStorage . Эта функция позволяет 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 и 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 .

Исправлены ошибки:

  • Fixed java.lang.UnsatisfiedLinkError when using DataStore in 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.Function in GuavaDataStore . ( I71eae , b/448563999 )
  • Add an overload for GuavaDataStore.from that takes in an Executor instead of a 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

  • 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 и 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 содержит следующие коммиты .

Исправлены ошибки

  • Improve warm read latency ( DataStore.data.first() ) by 8x. ( 22b8a40 )
  • ReplaceFileCorruptionHandler can 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 updateData calls didn't optimize on disk writes if the new data is the same as the old data ( 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 methods are no longer experimental.The @ExperimentalMultiProcessDataStore annotation 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 FileStorage is 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 InterProcessCoordinator to StorageConnection in datastore-core interface ( I555bb )
  • Измените API в MultiProcessDataStoreFactory в datastore-core для использования хранилища. ( Iac02f )
  • Move public APIs in datastore-multiprocess to datastore-core ( I76d7c )
  • Exposed PreferencesSerializer from datastore-preferences-core ( I4b788 )
  • Adding @JvmDefaultWithCompatibility annotation ( 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 DataStore instances across processes. Add MultiProcessDataStoreFactory#create to create such DataStore instances.
  • Новый интерфейс 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

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