DataStore

Асинхронное, согласованное и транзакционное хранение данных, которое позволяет преодолеть некоторые недостатки SharedPreferences.
Последнее обновление Основная версия Release Candidate Бета-версия Альфа-версия
12 октября 2026 г. 1.2.1 1.3.0-rc01 - -

Объявление зависимостей

Чтобы добавить зависимость от DataStore, необходимо добавить в проект репозиторий Google Maven. Подробную информацию можно найти в статье Репозиторий Google Maven.

DataStore предлагает разные варианты сериализации. Выберите один из них. Вы также можете добавить зависимости, не связанные с Android, в любую реализацию.

Добавьте зависимости для нужной реализации в файл build.gradle приложения или модуля:

Preferences DataStore

Добавьте в раздел зависимостей файла 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"
    }
    

Kotlin

    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"
    }
    

Kotlin

    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")
    }
    

DataStore

Добавьте в раздел зависимостей файла 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"
    }
    

Kotlin

    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"
    }
    

Kotlin

    dependencies {
        // optional - RxJava2 support
        implementation("androidx.datastore:datastore-rxjava2:1.2.1")

        // optional - RxJava3 support
        implementation("androidx.datastore:datastore-rxjava3:1.2.1")
    }
    

Чтобы сериализовать контент, добавьте зависимости для буферов протокола или сериализации JSON.

Сериализация JSON

Чтобы использовать сериализацию JSON, добавьте в файл Gradle следующий код:

Яркий

    plugins {
        id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20"
    }

    dependencies {
        implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0"
    }
    

Kotlin

    plugins {
        id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20"
    }

    dependencies {
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
    }
    

Сериализация Protobuf

Чтобы использовать сериализацию Protobuf, добавьте в файл Gradle следующее:

Яркий

    plugins {
        id("com.google.protobuf") version "0.9.5"
    }
    dependencies {
        implementation "com.google.protobuf:protobuf-kotlin-lite:4.32.1"

    }

    protobuf {
        protoc {
            artifact = "com.google.protobuf:protoc:4.32.1"
        }
        generateProtoTasks {
            all().forEach { task ->
                task.builtins {
                    create("java") {
                        option("lite")
                    }
                    create("kotlin")
                }
            }
        }
    }
    

Kotlin

    plugins {
        id("com.google.protobuf") version "0.9.5"
    }
    dependencies {
        implementation("com.google.protobuf:protobuf-kotlin-lite:4.32.1")
    }

    protobuf {
        protoc {
            artifact = "com.google.protobuf:protoc:4.32.1"
        }
        generateProtoTasks {
            all().forEach { task ->
                task.builtins {
                    create("java") {
                        option("lite")
                    }
                    create("kotlin")
                }
            }
        }
    }
    

Отзыв

Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите новые проблемы или у вас появятся идеи по улучшению этой библиотеки, сообщите нам. Прежде чем сообщать о новых ошибках, изучите уже добавленные. Чтобы проголосовать за существующую проблему, нажмите на значок звездочки.

Как создать новую проблему

Дополнительную информацию можно найти в документации по системе отслеживания ошибок.

Версия 1.3

Версия 1.3.0-rc01

12 октября 2026 г.

Выход androidx.datastore:datastore-*:1.3.0-rc01. Версия 1.3.0-rc01 содержит эти коммиты.

Изменения в API

  • Используйте WindowCompat#enableEdgeToEdge(Window) вместо EdgeToEdge#enable() (Ibff3e).

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

  • Зависимость androidx.lifecycle:lifecycle-runtime обновлена до версии 2.10.0. Эта версия необходима для запуска встроенных проверок времени выполнения жизненного цикла с AGP версии 9.5.0-alpha04 или более поздней. (I99bfd, b/556807521)

Версия 1.3.0-alpha11

9 сентября 2026 г.

Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha11". Версия 1.3.0-alpha11 содержит эти коммиты.

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

  • Путь к файлу не включается в сообщения CorruptionException, которые появляются при сбое синтаксического анализа настроек DataStore. (Ia9e8f)

Версия 1.3.0-alpha10

29 июля 2026 г.

Выход androidx.datastore:datastore-*:1.3.0-alpha10. Версия 1.3.0-alpha10 содержит эти коммиты.

Изменения в API

  • GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration. (I26e56, b/514941919)

Версия 1.3.0-alpha09

6 мая 2026 г.

Выход androidx.datastore:datastore-*:1.3.0-alpha09. Версия 1.3.0-alpha09 содержит эти коммиты.

Изменения в API

  • Сделайте ReThrowCorruptionHandler общедоступным. (I137bb, b/427722902)
  • Сделайте жизненный цикл трассировки согласованным с трассировкой системы. (Ib391b)

Версия 1.3.0-alpha08

22 апреля 2026 г.

Выход androidx.datastore:datastore-*:1.3.0-alpha08. Версия 1.3.0-alpha08 содержит эти коммиты.

Новые функции

  • Добавлена поддержка частной файловой системы источника (OPFS) в DataStore для веб-платформ. В этой реализации используется WebOpfsStorage, а также реализована архитектурная поддержка асинхронного ввода-вывода файлов, уведомлений между вкладками с помощью API BroadcastChannel и распределенной блокировки через нативный Web Locks API для эксклюзивного доступа на запись. Id7f5807 b/316376114

Изменения в API

  • Добавлены API WebLocalStorage и WebSessionStorage для явного управления типом хранилища в веб-средах. I35fa259b b/316376114

Версия 1.3.0-alpha07

11 марта 2026 г.

Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha07". Версия 1.3.0-alpha07 содержит эти коммиты.

Новые функции

  • Поддержка шифрования. Добавлен новый артефакт androidx.datastore:datastore-tink, который обеспечивает поддержку шифрования хранилища данных с помощью библиотеки Tink. В этом модуле представлен класс AeadSerializer – новый класс-оболочка, который реализует Serializer<T> и использует аутентифицированное шифрование Tink с сопутствующими данными (AEAD) для шифрования и расшифровки данных. AeadSerializer можно использовать на целевых платформах JVM и Android.
  • Новый DataStore Builder API. Представлен DataStore.Builder<T> – масштабируемая альтернатива DataStoreFactory. С помощью нового API пользователи могут задавать собственную логику повреждения через setCorruptionHandler. Кроме того, API Builder требует, чтобы DataStore инициализировался с помощью CoroutineContext, а не CoroutineScope. Это улучшает структурированный параллелизм, поскольку позволяет вызывающим объектам определять поведение выполнения (например, конкретные диспетчеры), не заставляя DataStore ненадлежащим образом управлять жизненным циклом области вызывающего объекта или быть связанным с ним.

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

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

Изменения в API

  • Добавлен новый артефакт androidx.datastore:datastore-tink для поддержки шифрования DataStore. (Ic106d, b/167697691)

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

    1. Создайте ключ с помощью Tink API:

      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)

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

  • Устранена проблема, из-за которой двоичные данные могли быть повреждены во время хранения. Для этого обработка строк UTF-8 была заменена кодировкой Base64 для веб-версии. (Ie3178, b/473790107)

Версия 1.3.0-alpha03

17 декабря 2025 г.

Выход androidx.datastore:datastore-*:1.3.0-alpha03. Версия 1.3.0-alpha03 содержит эти коммиты.

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

  • Исправлена ошибка, из-за которой не удавалось переименовать временный файл хранилища данных. (I94f89, b/203087070)
  • Исправлена ошибка, из-за которой при одновременном чтении и записи могли теряться обновления. Между новым сборщиком в DataStore.data и параллельным вызовом updateData может возникнуть состояние гонки, из-за чего сборщик пропустит новое значение. (I6a427, b/431787506)

Версия 1.3.0-alpha02

3 декабря 2025 г.

Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha02". Версия 1.3.0-alpha02 содержит эти коммиты.

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

  • Добавьте цель js() в androidx.datastore. (I1f62b, b/441511612)
  • Принудительно использовать порядок FIFO в обновлениях GuavaDataStore. (I6fd00,b/451491257)

Версия 1.3.0-alpha01

19 ноября 2025 г.

Выход сингла "androidx.datastore:datastore-*:1.3.0-alpha01". Версия 1.3.0-alpha01 содержит эти коммиты.

Новые функции

  • Добавлена поддержка KMP Web в DataStore с помощью sessionStorage API. Эта функция позволяет DataStore временно сохранять данные в одной вкладке браузера. (I60fad, b/316376114)

Версия 1.2

Версия 1.2.1

11 марта 2026 г.

Выход androidx.datastore:datastore-*:1.2.1. Версия 1.2.1 содержит эти коммиты.

Пользователь не внес никаких изменений

  • В этом выпуске исправлены незначительные ошибки инфраструктуры. Изменений в Datastore API или поведении по сравнению с версией 1.2.0 нет.

Версия 1.2.0

19 ноября 2025 г.

Выход сингла "androidx.datastore:datastore-*:1.2.0". Версия 1.2.0 содержит эти коммиты.

Основные изменения по сравнению с версией 1.1.0

Поддержка Java/Guava

  • Добавлен новый модуль datastore-guava, который предоставляет 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 методом делегирования, чтобы инициализировать DataStore для использования во время прямой загрузки. (If71b9)

Версия 1.2.0-alpha01

26 марта 2025 г.

Выход сингла "androidx.datastore:datastore-*:1.2.0-alpha01". Версия 1.2.0-alpha01 содержит эти коммиты.

Новые функции

  • Добавлен модуль datastore-guava, чтобы предоставить пользователям Java и Guava ListenableFuture удобные API через 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, связанная с ошибкой "Resource deadlock would occur" (Возникнет взаимная блокировка ресурсов) в пограничном случае, когда несколько экземпляров DataStore пытаются выполнить запись из разных процессов, отменяя блокировку файла.

Версия 1.1.0

17 апреля 2024 г.

Выход androidx.datastore:datastore-*:1.1.0. Версия 1.1.0 содержит эти коммиты.

Основные изменения по сравнению с версией 1.0.0

Дополнительную информацию можно найти в примечаниях к выпуску альфа- и бета-версий 1.1.0. Вот некоторые из основных изменений в версии 1.1.0:

  • Теперь DataStore поддерживает доступ нескольких процессов к одному файлу и наблюдаемость между процессами.
  • Новый интерфейс Storage позволяет настраивать хранение и сериализацию моделей данных.
  • Теперь вы можете использовать DataStore в проектах Kotlin Multiplatform.

Версия 1.1.0-rc01

3 апреля 2024 г.

Выход сингла "androidx.datastore:datastore-*:1.1.0-rc01". Версия 1.1.0-rc01 содержит эти коммиты.

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

  • Исправлена проблема со снижением производительности, из-за которой вызовы updateData не оптимизировали запись на диск, если новые данные совпадали со старыми (d64cfb5).
  • Исправлено состояние гонки, из-за которого 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. Чтобы избежать этой проблемы, при инициализации DataStore в тестах обязательно передавайте TestScope.backgroundScope.
  • Исправлена проблема, из-за которой вложенные вызовы updateData в одном экземпляре приводили к взаимоблокировке. (b/241760537)
  • Функция DataStore больше не вызывает ошибку IOExceptions, если не удается удалить SharedPreferences во время переноса. (b/195553816)
  • Исправлена ошибка, из-за которой не удавалось переименовать файл во время updateData в средах JVM, отличных от Android. (b/203087070)
  • Исправлена проблема, из-за которой CorruptionException не обрабатывался после инициализации DataStore. (b/289582516)

Версия 1.1.0-beta01

10 января 2024 г.

Версия androidx.datastore:datastore-*:1.1.0-beta01 выпущена без изменений по сравнению с версией 1.1.0-alpha07. Версия 1.1.0-beta01 содержит следующие коммиты:

Версия 1.1.0-alpha07

29 ноября 2023 г.

Выход androidx.datastore:datastore-*:1.1.0-alpha07. Версия 1.1.0-alpha07 содержит эти коммиты.

Изменения в API

  • Методы MultiProcessDataStoreFactory больше не экспериментальные.Аннотация @ExperimentalMultiProcessDataStore удалена. (Ieee54, I8e607)

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

  • Удаление аннотаций @ExperimentalMultiProcessDataStore в версии 1.1.0-alpha07. (I8e607)

Версия 1.1.0-alpha06

1 ноября 2023 г.

Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha06". Версия 1.1.0-alpha06 содержит эти коммиты.

Изменения в API

  • Теперь фабричный метод createSingleProcessCoordinator получает путь к файлу (String, java.io.File и okio.Path), чтобы обеспечить совместимость с createMultiProcessCoordinator. (I211c8, b/305755935)

Версия 1.1.0-alpha05

6 сентября 2023 г.

Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha05". Версия 1.1.0-alpha05 содержит следующие коммиты:

Изменения в API

  • Хранилище данных FileStorage теперь общедоступно, поэтому клиенты могут указывать собственные параметры. (Icb985)
  • Конструктор OkioStorage теперь принимает InterProcessCoordinator, чтобы его можно было использовать на устройствах Android с MultiProcessCoordinator. (Iecea3)

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

  • Исправлена ошибка, из-за которой MultiProcessCoordinator не мог отслеживать несколько файлов в одном каталоге.
  • Исправлена ошибка, из-за которой не удавалось обнаружить повторяющиеся файлы, если пути к ним не были нормализованы.
  • Исправьте неверные значения, возвращаемые из RxDataStore#isDisposed.
  • Исправьте отсутствующую конфигурацию ProGuard для артефакта datstore-preferences-core.

Версия 1.1.0-alpha04

5 апреля 2023 г.

Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha04". Версия 1.1.0-alpha04 содержит эти коммиты.

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

  • Улучшена внутренняя реализация, чтобы избежать состояния гонки, при котором поток данных DataStore может выдать более старое значение после обновления.

Версия 1.1.0-alpha03

24 марта 2023 г.

Выход androidx.datastore:datastore-*:1.1.0-alpha03.

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

  • Удалены ограничения зависимостей из артефактов Maven, чтобы обойти проблему со сборкой в Kotlin Native Targets (b/274786186, KT-57531).

Версия 1.1.0-alpha02

22 марта 2023 г.

Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha02". Версия 1.1.0-alpha02 содержит эти коммиты.

Примечание

Обратите внимание, что эта версия включает важный внутренний рефакторинг, который объединяет реализации для однопроцессных и многопроцессных реализаций DataStore. Обратите внимание на возможные непредвиденные изменения в работе (например, в сроках уведомлений об обновлениях). Сообщить о таких изменениях можно с помощью системы отслеживания ошибок.

Новые функции

  • Теперь вы можете использовать DataStore в проектах KMM. Обратите внимание, что версии DataStore для других платформ, кроме Android, пока находятся на стадии эксперимента, но мы решили объединить версии, чтобы разработчикам было проще их попробовать.
  • Функции, связанные с несколькими процессами, перенесены из androidx.datastore.multiprocess в androidx.datastore.core.
  • Добавьте новый фабричный метод в androidx.datastore.core.MultiProcessDataStoreFactory, чтобы создавать экземпляры DataStore с объектами Storage для операций с файлами.
  • Добавлен новый интерфейс InterProcessCoordinator, который помогает нескольким экземплярам DataStore взаимодействовать между процессами. Обратите внимание, что многопроцессная реализация InterProcessCoordinator доступна только на Android.

Изменения в API

  • Добавление InterProcessCoordinator в StorageConnection в интерфейсе datastore-core (I555bb)
  • Измените API в datastore-core MultiProcessDataStoreFactory, чтобы использовать Storage. (Iac02f)
  • Перенос общедоступных API из datastore-multiprocess в datastore-core (I76d7c)
  • Обнаружена ошибка PreferencesSerializer в datastore-preferences-core (I4b788)
  • Добавление аннотации @JvmDefaultWithCompatibility (I8f206)

Версия 1.1.0-alpha01

9 ноября 2022 г.

Выход сингла "androidx.datastore:datastore-*:1.1.0-alpha01". Версия 1.1.0-alpha01 содержит эти коммиты.

Новые функции

  • Поддержка многопроцессных сценариев использования, в которых обеспечивается согласованность данных между экземплярами DataStore в разных процессах. Добавьте MultiProcessDataStoreFactory#create, чтобы создать такие экземпляры DataStore.
  • Новый интерфейс хранилища, который позволяет переключаться между разными механизмами хранения для Datastore. Предоставляются реализации для java.io и okio. DataStore теперь имеют новые методы, которые принимают объект Storage.

Изменения в API

  • Измените API в datastore-core MultiProcessDataStoreFactory, чтобы использовать Storage. (Iac02f)
  • Перенос общедоступных API из datastore-multiprocess в datastore-core (I76d7c)
  • Добавлен класс PreferencesSerializer из datastore-preferences-core (I4b788).

Версия 1.0.0

Версия 1.0.0

4 августа 2021 г.

Выход сингла "androidx.datastore:datastore-*:1.0.0". Версия 1.0.0 содержит эти коммиты.

Основные функции версии 1.0.0

Jetpack DataStore – это решение для хранения данных, которое позволяет сохранять пары "ключ-значение" или типизированные объекты с буферами протоколов. DataStore использует сопрограммы Kotlin и Flow для асинхронного, согласованного и транзакционного хранения данных.

Версия 1.0.0-rc02

21 июля 2021 г.

Выход сингла "androidx.datastore:datastore-*:1.0.0-rc02". Версия 1.0.0-rc02 содержит следующие коммиты:

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

  • Уточните, что SharedPreferencesMigration не выполняется, если нет ключей. (Icfa32, b/192824325)
  • Исправлена ошибка, из-за которой SharedPreferencesMigration, созданный с помощью MIGRATE_ALL_KEYS, выдавал исключение, если запрашиваемый ключ ещё не существовал. (Ie318a, b/192824325)

Версия 1.0.0-rc01

30 июня 2021 г.

Выход сингла "androidx.datastore:datastore-*:1.0.0-rc01". Версия 1.0.0-rc01 содержит эти коммиты.

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

  • Исправлена ошибка, из-за которой файл .java непреднамеренно добавлялся в конечный JAR-файл (I65d96, b/188985637).

Версия 1.0.0-beta02

16 июня 2021 г.

Выход сингла "androidx.datastore:datastore-*:1.0.0-beta02". Версия 1.0.0-beta02 содержит следующие коммиты:

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

  • Исправить ClassVerificationFailure (b/187450483)

Версия 1.0.0-beta01

21 апреля 2021 г.

Выход сингла "androidx.datastore:datastore-*:1.0.0-beta01". Версия 1.0.0-beta01 содержит следующие коммиты:

Изменения в API

  • Удалены перегрузки JVM для методов, предназначенных только для Kotlin (I2adc7).

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

  • Исправлена ошибка, из-за которой делегаты хранилища данных могли приводить к утечке контекстов (Ie96fc, b/184415662).

Версия 1.0.0-alpha08

10 марта 2021 г.

Выход сингла "androidx.datastore:datastore-*:1.0.0-alpha08". Версия 1.0.0-alpha08 содержит следующие коммиты:

Изменения в API

  • Теперь вы можете добавить в делегат свойств dataStore и preferencesDataStore перенос, зависящий от контекста. (I4ef69, b/173726702)
  • Добавлены вспомогательные функции для получения названия файла, если вы больше не используете делегат хранилища данных или context.createDataStore (I60f9a).
  • Функции writeTo и readFrom сериализатора теперь приостанавливаются. Если вы реализовали Serializer, вам нужно будет обновить функции, чтобы они стали функциями приостановки. (I1e58e)
  • Добавлены делегаты свойств для пользователей RxDataStore. Ied768, b/173726702

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

  • Принудительно применяются ограничения на публичное использование экспериментальных API (I6aa29, b/174531520).

Версия 1.0.0-alpha07

24 февраля 2021 г.

Выход сингла "androidx.datastore:datastore-*:1.0.0-alpha07". Версия 1.0.0-alpha07 содержит следующие коммиты:

Изменения в API

  • Функция расширения Context.createDataStore удалена и заменена делегатом свойства globalDataStore. Вызовите globalDataStore один раз на верхнем уровне в файле kotlin. Пример:

    val Context.myDataStore by dataStore(...)
    

    Добавьте этот код в файл Kotlin на верхнем уровне, чтобы у вас был только один экземпляр. (I57215, b/173726702)

  • Функции RxDataStore теперь находятся в классе RxDataStore, а не в функциях расширения DataStore. (Idccdb, b/177691248)

  • Если вы хотите перенести EncryptedSharedPreferences (или SharedPreferences с прямой загрузкой) в DataStore, теперь вы можете сделать это с помощью нового конструктора SharedPreferencesMigration, который позволяет внедрять SharedPreferences. (I8e04e, b/177278510)

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

  • Теперь DataStore будет выдавать исключение, если для одного файла есть несколько активных хранилищ данных. Если вы не управляли хранилищем данных как объектом Singleton или не следили за тем, чтобы для файла одновременно не были активны два экземпляра хранилища данных, то теперь при чтении или записи в хранилище данных могут возникать исключения. Эту проблему можно решить, если управлять DataStore как объектом Singleton. (Ib43f4, b/177691248)
  • Исправлено поведение при отмене, когда отменяется область вызывающего объекта. (I2c7b3)

Версия 1.0.0-alpha06

13 января 2021 г.

Выход androidx.datastore:datastore-*:1.0.0-alpha06. Версия 1.0.0-alpha06 содержит следующие коммиты.

Новые функции

  • Добавлены оболочки RxJava для DataStore. Артефакты datastore-rxjava2/3 содержат оболочки для основных API DataStore (RxDataStore, RxDataStoreBuilder и RxDataMigration). Артефакты datastore-preferences-rxjava2/3 содержат конструктор для создания Preferences DataStore.

Изменения в API

  • Скрыть интерфейс CorruptionHandler. Не было причин делать его общедоступным, поскольку фабрика DataStore принимает только ReplaceFileCorruptionHandler. (I0b3b3, b/176032264)
  • Метод preferencesKey<T>(name: String): Key<T> был удален и заменен методами, относящимися к каждому поддерживаемому типу. Например, метод preferencesKey<Int>("int") теперь называется intPreferencesKey("int") (Ibcfac, b/170311106).

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

  • Исправлена документация по DataStoreFactory, в которой не было указано, что файл хранилища данных создается в подкаталоге datastore/. (Ica222)

Версия 1.0.0-alpha05

2 декабря 2020 г.

Выход androidx.datastore:datastore-*:1.0.0-alpha05. Версия 1.0.0-alpha05 содержит эти коммиты.

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

  • Добавьте более подробную документацию и исключения, связанные с одновременной записью из хранилищ данных. (Ia98a2, b/173522155, b/173726702)
  • Теперь мы разрешаем (но не требуем) закрывать OutputStream, переданный в Serializer.writeTo(). (I5c9bf, b/173037611)

Версия 1.0.0-alpha04

17 ноября 2020 г.

Выход сингла "androidx.datastore:datastore-*:1.0.0-alpha04". Версия 1.0.0-alpha04 содержит следующие коммиты:

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

  • Исправлена проблема с упаковкой, которая вызывала следующий сбой в Preference Datastore 1.0.0-alpha03: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

Версия 1.0.0-alpha03

11 ноября 2020 г.

Выход androidx.datastore:datastore-*:1.0.0-alpha03. Версия 1.0.0-alpha03 содержит эти коммиты.

Новые функции

  • В Preferences теперь поддерживаются значения double, что полезно, если вам нужна более высокая точность, чем у float (I5be8f, b/169471808).

Изменения в API

  • Создана зависимость Kotlin для хранилища данных, чтобы ускорить компиляцию. androidx.datastore:datastore-core содержит только основные API Kotlin, а androidx.datastore:datastore – API, зависящие от Android (включая SharedPreferencesMigration и конструктор Context.createDataStore). (I42d75, b/168512698)
  • Разделение целей для хранилища данных настроек, чтобы ускорить компиляцию Kotlin (Ia3c19).
  • Теперь сериализаторам требуется новое свойство для значения по умолчанию, которое будет использоваться, если на диске нет данных. Это упрощает реализацию пользовательских сериализаторов, поскольку пользователям не нужно обрабатывать пустые входные потоки (пустые входные потоки не анализируются с помощью JSON).

    • Также теперь проверяется, не закрыт ли выходной поток, предоставленный writeTo(). Если он закрыт, выдаются исключения (I16e29).
  • Конструктор SharedPreferencesView стал внутренним. Изначально он был общедоступным, чтобы можно было проводить тестирование. Вместо этого в тестах следует создавать объект SharedPreferencesMigration и проверять его. (I93891)

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

  • Параметр produceFile в DataStoreFactory и PreferenceDataStoreFactory теперь является последним в списке, поэтому вы можете использовать лямбда-синтаксис Kotlin. (Ibe7f1, b/169425442)
  • Добавлены новые требования к явному API для Kotlin (I5ae1e).

Известные проблемы

  • Preference Datastore аварийно завершает работу с ошибкой java.lang.NoClassDefFoundError. (b/173036843)

Версия 1.0.0-alpha02

14 октября 2020 г.

Выход сингла androidx.datastore:datastore-core:1.0.0-alpha02 и альбома androidx.datastore:datastore-preferences:1.0.0-alpha02. Версия 1.0.0-alpha02 содержит эти коммиты.

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

  • Добавлена защита от мутации в datastore-core. Изменение нарушает использование хранилища данных для тех, кто использует его с типами, отличными от proto и preferences (I6aa84).
  • В Preferences.kt добавлен метод toString, чтобы упростить отладку текущего состояния (I96006).
  • Добавлено исключение для защиты от недопустимого использования DataStore.Preferences (I1134d).
  • Исправлена ошибка, из-за которой приложение аварийно завершало работу при запуске (I69237, b/168580258).

Версия 1.0.0-alpha01

2 сентября 2020 г.

Выход сингла androidx.datastore:datastore-core:1.0.0-alpha01 и альбома androidx.datastore:datastore-preferences:1.0.0-alpha01. Версия 1.0.0-alpha01 содержит эти коммиты.

Новые функции

Jetpack DataStore – это новое улучшенное решение для хранения данных, которое должно заменить SharedPreferences. DataStore, созданный на основе сопрограмм и потоков Kotlin, предлагает две реализации:

  • Proto DataStore, позволяющий хранить типизированные объекты (на основе буферов протоколов).
  • Preferences DataStore, в котором хранятся пары "ключ-значение".

Данные хранятся асинхронно, согласованно и транзакционно, что позволяет преодолеть большинство недостатков SharedPreferences.