DataStore
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 12 de outubro de 2026 | 1.2.1 | 1.3.0-rc01 | - | - |
Declarar dependências
Para adicionar uma dependência ao DataStore, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
O DataStore oferece opções diferentes para serialização. Escolha uma delas. Você também pode adicionar dependências sem Android a qualquer uma dessas implementações.
Adicione as dependências para a implementação necessária no arquivo build.gradle
do app ou módulo:
Preferences DataStore
Adicione as seguintes linhas à parte de dependências do arquivo gradle:
Groovy
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") }
Para adicionar suporte opcional ao RxJava, adicione as seguintes dependências:
Groovy
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
Adicione as seguintes linhas à parte de dependências do arquivo gradle:
Groovy
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") }
Adicione as seguintes dependências opcionais para compatibilidade com RxJava:
Groovy
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") }
Para serializar conteúdo, adicione dependências para buffers de protocolo ou serialização JSON.
Serialização JSON
Para usar a serialização JSON, adicione o seguinte ao arquivo do Gradle:
Groovy
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") }
Serialização do Protobuf
Para usar a serialização do Protobuf, adicione o seguinte ao arquivo do Gradle:
Groovy
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") } } } }
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.3
Versão 1.3.0-rc01
12 de outubro de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-rc01. A versão 1.3.0-rc01 contém estes commits.
Mudanças na API
- Use
WindowCompat#enableEdgeToEdge(Window)em vez deEdgeToEdge#enable()(Ibff3e)
Correções de bugs
- A dependência
androidx.lifecycle:lifecycle-runtimefoi atualizada para 2.10.0. Essa versão é necessária para que as verificações de lint do tempo de execução do ciclo de vida agrupado sejam executadas com o AGP versão 9.5.0-alpha04 ou mais recente. (I99bfd, b/556807521).
Versão 1.3.0-alpha11
9 de setembro de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha11. A versão 1.3.0-alpha11 contém estes commits.
Correções de bugs
- O caminho do arquivo subjacente não está incluído nas mensagens
CorruptionExceptiongeradas durante falhas de análise de preferênciasDataStore. (Ia9e8f).
Versão 1.3.0-alpha10
29 de julho de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha10. A versão 1.3.0-alpha10 contém estes commits.
Mudanças na API
GeneralSecurityException in AeadSerializer is now wrapped in CorruptionException for better CorruptionHandler integration.(I26e56, b/514941919).
Versão 1.3.0-alpha09
6 de maio de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha09. A versão 1.3.0-alpha09 contém estas confirmações.
Mudanças na API
- O
ReThrowCorruptionHandleragora é público. (I137bb, b/427722902) - O ciclo de vida do rastreamento agora é consistente com o rastreamento do sistema. (Ib391b).
Versão 1.3.0-alpha08
22 abril de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha08. A versão 1.3.0-alpha08 contém estes commits.
Novos recursos
- Adição de suporte ao sistema de arquivos particular de origem (OPFS, na sigla em inglês) no DataStore para plataformas da Web. Essa implementação apresenta o
WebOpfsStoragee inclui suporte arquitetônico para E/S de arquivos assíncronos, notificações entre guias usando a APIBroadcastChannele bloqueio distribuído peloWeb Locks APInativo para acesso de gravação exclusivo. Id7f5807 b/316376114
Mudanças na API
- Introdução das APIs
WebLocalStorageeWebSessionStoragepara gerenciamento explícito de tipos de armazenamento em ambientes da Web. I35fa259b b/316376114
Versão 1.3.0-alpha07
11 de março de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha07. A versão 1.3.0-alpha07 contém estas confirmações.
Novos recursos
- Suporte à criptografia: introduzimos o novo artefato
androidx.datastore:datastore-tink, que oferece suporte à criptografia do seu repositório de dados usando a biblioteca Tink. Este módulo apresenta aAeadSerializer, uma nova classe wrapper que implementaSerializer<T>e usa a criptografia autenticada com dados associados (AEAD, na sigla em inglês) do Tink para criptografar e descriptografar dados. OAeadSerializerestá disponível para uso em plataformas segmentadas da JVM e do Android. - Nova API Builder
DataStore: introdução deDataStore.Builder<T>como a alternativa escalonável paraDataStoreFactory. Com essa nova API, os usuários agora têm uma maneira de fornecer a própria lógica de corrupção usandosetCorruptionHandler. Além disso, a APIBuilderexige que umDataStoreseja inicializado usando umCoroutineContextem vez de umCoroutineScope, uma melhoria para a simultaneidade estruturada, já que permite que os autores de chamada definam o comportamento de execução (como Dispatchers específicos) sem forçar oDataStorea gerenciar de forma inadequada ou ser vinculado ao ciclo de vida do escopo do autor da chamada.Observação:recomendamos que todos os usuários migrem de
DataStoreFactorypara as novas APIsDataStore.Builder. Ao exigir umCoroutineContextem vez de umCoroutineScope, a API aplica uma simultaneidade estruturada melhor. Isso garante que as operações do DataStore não fiquem vinculadas a ciclos de vida de interface de curta duração (por exemplo,viewModelScope), evitando o cancelamento prematuro e a possível perda de dados.Aviso:verifique se o
CoroutineContextfornecido ao Builder tem umJobe se ele tem escopo de aplicativo. Se o contexto for cancelado, as operações internas deDataStoreserão encerradas prematuramente.
Mudanças na API
Introdução do novo artefato
androidx.datastore:datastore-tinkpara suporte à criptografiaDataStore. (Ic106d, b/167697691).Para criptografar dados usando o Tink, siga estas etapas:
Crie uma chave usando as APIs do Tink:
val keysetHandle = AndroidKeysetManager.Builder() .withSharedPref(applicationContext, "keyset", "keyset_prefs") .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM)) .withMasterKeyUri("android-keystore://master_key") .build() .keysetHandleCrie um
AeadSerializerque encapsule um serializador: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(), )Use este
aeadSerializerno lugar do serializador ao criar a instância do repositório de dados:val dataStore = dataStore( fileName = "settings.json", serializer = aeadSerializer, scope = scope, )
Introdução do
DataStore.Builder<T>como a alternativa moderna e escalonável paraDataStoreFactory. (I3b110, b/267785821, b/400507108, b/368385681, b/427722902, b/370838564, b/167697691)
Versão 1.3.0-alpha06
25 de fevereiro de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha06. A versão 1.3.0-alpha06 contém estes commits.
Novos recursos
DataStoreagora oferece suporte aandroidx.tracingna plataforma segmentada do Android. É possível criar umDataStorecom rastreamento fornecendo uma instânciaandroidx.tracing.Tracerà funçãoDataStoreFactory.createWithTracing(). (I71bc2, b/427722902).
Versão 1.3.0-alpha05
28 de janeiro de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha05. A versão 1.3.0-alpha05 contém estas confirmações.
Novos recursos
- Perfis de referência adicionados ao repositório de dados. (3916245,b/469127532).
- Implemente a compatibilidade com WASM/JS no DataStore usando
localStorage. Isso cria uma vantagem distinta em relação à implementação atual dosessionStorage, permitindo notificações de eventos e sincronização entre guias. (I67246, b/441511612)
Versão 1.3.0-alpha04
14 de janeiro de 2026
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha04. A versão 1.3.0-alpha04 contém estes commits.
Mudanças na API
- Adicionamos uma função de cópia de utilitário que pode ser usada para atualizar dados das preferências
DataStore. (I70a18, b/467120382).
Correções de bugs
- Foi resolvido um problema em que os dados binários podiam ser corrompidos durante o armazenamento. Para isso, o processamento de strings UTF-8 foi substituído pela codificação Base64 para Web. (Ie3178, b/473790107).
Versão 1.3.0-alpha03
17 de dezembro de 2025
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha03. A versão 1.3.0-alpha03 contém estes commits.
Correções de bugs
- Correção do problema com a falha na renomeação do arquivo temporário do repositório de dados. (I94f89, b/203087070).
- Correção de um problema para evitar atualizações descartadas durante a leitura/gravação simultânea. Uma disputa pode ocorrer entre um novo coletor em
DataStore.datae uma chamadaupdateDatasimultânea, fazendo com que o coletor perca o novo valor. (I6a427, b/431787506).
Versão 1.3.0-alpha02
3 de dezembro de 2025
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha02. A versão 1.3.0-alpha02 contém estes commits.
Correções de bugs
- Adicione o destino js() a
androidx.datastore. (I1f62b, b/441511612) - Aplicar a ordem PEPS nas atualizações de
GuavaDataStore. (I6fd00,b/451491257)
Versão 1.3.0-alpha01
19 de novembro de 2025
Lançamento de androidx.datastore:datastore-*:1.3.0-alpha01. A versão 1.3.0-alpha01 contém estes commits.
Novos recursos
- Adicionamos suporte à Web do KMP em
DataStoreusando a APIsessionStorage. Esse recurso permite que oDataStorepersista dados temporariamente em uma única guia do navegador. (I60fad, b/316376114).
Versão 1.2
Versão 1.2.1
11 de março de 2026
Lançamento de androidx.datastore:datastore-*:1.2.1. A versão 1.2.1 contém estas confirmações.
Sem alterações
- Esta versão apresenta pequenas correções de bugs de infraestrutura e não inclui mudanças na API DataStore ou no comportamento da versão 1.2.0.
Versão 1.2.0
19 de novembro de 2025
Lançamento de androidx.datastore:datastore-*:1.2.0. A versão 1.2.0 contém estas confirmações.
Principais mudanças desde o lançamento da versão 1.1.0
Suporte a Java/Guava:
- Adição do novo módulo
datastore-guavapara expor APIs compatíveis com usuários do Java e do GuavaListenableFutureusandoGuavaDataStore. - Adicionamos suporte a vários processos no
GuavaDataStore. - Adição de uma sobrecarga para
GuavaDataStore.fromque aceita umExecutorJava (em vez de umCoroutineContext) e usaandroidx.core.util.Function.
Suporte para inicialização direta:
- O uso do DataStore durante o modo de inicialização direta agora é compatível. Novas APIs, como
createInDeviceProtectedStorage()emDataStoreFactoryedeviceProtectedDataStore()emDataStoreDelegate, permitem criar o DataStore no armazenamento protegido do dispositivo.
Mudanças no armazenamento e na API:
- Adicionamos
PreferencesFileSerializer, que implementaandroidx.datastore.core.Serializerpara uso comFileStorage. - Definido o construtor padrão para
ReplaceFileCorruptionHandlerpara uso comum de código.
Correções de bugs:
- Correção de
java.lang.UnsatisfiedLinkErrorao usarDataStoreem um app otimizado com o R8, mas sem usar o arquivo padrão do ProGuard. - Foi corrigido um problema em que as operações
GuavaDataStorepodiam ser executadas incorretamente na linha de execução de chamada (por exemplo, a linha de execução principal) em vez do dispatcher de E/S especificado. - Foi resolvido um problema de
FileNotFoundExceptionemOkioStoragena inicialização adicionando uma segunda tentativa de ler dados em caso de disputa.
Versão 1.2.0-rc01
5 de novembro de 2025
Lançamento de androidx.datastore:datastore-*:1.2.0-rc01. A versão 1.2.0-rc01 contém estes commits.
Versão 1.2.0-beta01
22 de outubro de 2025
Lançamento de androidx.datastore:datastore-*:1.2.0-beta01. A versão 1.2.0-beta01 contém estes commits.
Mudanças na API
- O
CorruptionHandleragora é público. (I9ac35, b/452406457). - Usar
androidx.core.util.FunctionemGuavaDataStore. (I71eae, b/448563999). - Adição de uma sobrecarga para
GuavaDataStore.fromque usa um Executor em vez de umCoroutineContext. (I989fa, b/448563183)
Correções de bugs
- Correção de
java.lang.UnsatisfiedLinkErrorao usarDataStoreem um app otimizado com o R8, mas que não usagetDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293). - Correção de um problema em que as operações
GuavaDataStorepodiam ser executadas incorretamente na linha de execução de chamada (por exemplo, a linha de execução principal) em vez do dispatcher de E/S especificado. (Ic91ea,b/441801112)
Versão 1.2.0-alpha02
7 de maio de 2025
Lançamento de androidx.datastore:datastore-*:1.2.0-alpha02. A versão 1.2.0-alpha02 contém estes commits.
Mudanças na API
- Adição de suporte a vários processos em
GuavaDataStore. (e0d608a). - Adição de um método auxiliar para criar um
GuavaDataStoreusando umDataStore. (9af26f4) - Os projetos lançados com o Kotlin 2.0 exigem o KGP 2.0.0 ou mais recente para serem consumidos (Idb6b5).
- Substitua a sobrecarga
datastoreatual por um método delegado para inicializar um DataStore a ser usado durante a inicialização direta. (If71b9).
Versão 1.2.0-alpha01
26 de março de 2025
Lançamento de androidx.datastore:datastore-*:1.2.0-alpha01. A versão 1.2.0-alpha01 contém estes commits.
Novos recursos
- Adição do módulo
datastore-guavapara expor APIs compatíveis com usuários do Java e do GuavaListenableFutureusandoGuavaDataStore. (Iadd5e0). - O uso de
DataStoredurante o modoDirectBootagora é aceito. Para criar um armazenamento de dados que será usado durante o modo de inicialização direta, ele precisa ser criado no armazenamento protegido do dispositivo. Isso pode ser feito com as seguintes novas APIsDataStore:createInDeviceProtectedStorage()emDataStoreFactoryedeviceProtectedDataStore()emDataStoreDelegate. (Ib90e56)
Mudanças na API
- Adição de
PreferencesFileSerializerque implementa a interfaceandroidx.datastore.core.Serializerpara uso comFileStorage. (I4c71f3).
Correções de bugs
- Foi resolvido um problema de
FileNotFoundExceptionemOkioStoragena inicialização. Para isso, foi adicionada uma segunda tentativa de leitura de dados em caso de disputa. (I43b3fb, b/337870543). - Definido o construtor padrão para
ReplaceFileCorruptionHandlerpara uso comum de código. (I795b05, b/358138957).
Versão 1.1
Versão 1.1.7
20 de maio de 2025
Lançamento de androidx.datastore:datastore-*:1.1.7. A versão 1.1.7 contém estes commits.
Correções de bugs
- Correção do problema de regras do ProGuard ausentes no artefato Android de
datastore-preferences-core. (3f3f6e, b/413078297).
Versão 1.1.6
7 de maio de 2025
Lançamento de androidx.datastore:datastore-*:1.1.6. A versão 1.1.6 contém estes commits.
Correções de bugs
- Resolvemos um problema em que os metadados do Gradle estavam corrompidos na versão
1.1.5. Esse problema foi causado por um bug na nova DSL do plug-in do AGP KMP que impedia que os metadados de todas as plataformas segmentadas fossem incluídos automaticamente. O bug faz com que alguns métodos do DataStore Android não fiquem mais visíveis nas builds dos clientes. A correção envolve o uso da DSLandroidmais antiga embuild.gradleem vez deandroidLibrary. (7801abf).
Versão 1.1.5
23 de abril de 2025
Lançamento de androidx.datastore:datastore-*:1.1.5. A versão 1.1.5 contém estas confirmações.
Correções de bugs
- Para atenuar problemas de
CorruptionExceptionemPreferencesDataStore, o armazenamento padrão foi alterado deOkioStorageparaFileStorage. Essa mudança foi implementada com a introdução de umPreferencesFileSerializer. b/346197747
Versão 1.1.4
26 de março de 2025
Lançamento de androidx.datastore:datastore-*:1.1.4. A versão 1.1.4 contém estes commits.
Correções de bugs
- Substitua o armazenamento padrão de
OkioStorageparaFileStoragepara melhorar a confiabilidade reduzindoCorruptionException. (I71181, b/346197747).
Versão 1.1.3
26 de fevereiro de 2025
Lançamento de androidx.datastore:datastore-*:1.1.3. A versão 1.1.3 contém estes commits.
Correções de bugs
- Resolvemos um problema de
FileNotFoundExceptionemOkioStorageencontrado na inicialização do app. Se a primeira tentativa de leitura do arquivo falhar, uma segunda tentativa será feita caso tenha ocorrido uma disputa porque o arquivo foi criado por um processo diferente durante a leitura inicial. (I43b3f, b/337870543).
Versão 1.1.2
15 de janeiro de 2025
Lançamento de androidx.datastore:datastore-*:1.1.2. A versão 1.1.2 contém estes commits.
Correções de bugs
- Melhoria de 8 vezes na latência de leitura de dados acessados com frequência (
DataStore.data.first()). (22b8a40). ReplaceFileCorruptionHandlerpode ser criado com base no código comum do KMP. (7632e839)
Versão 1.1.1
1º de maio de 2024
Lançamento de androidx.datastore:datastore-*:1.1.1. A versão 1.1.1 contém estes commits.
Correções de bugs
- Mitigação do alarme falso do Linux no erro "Ocorrerá um impasse de recursos" em um caso extremo em que várias instâncias de
DataStoretentam gravar de processos diferentes ao recuar o bloqueio de arquivos.
Versão 1.1.0
17 de abril de 2024
Lançamento de androidx.datastore:datastore-*:1.1.0. A versão 1.1.0 contém estes commits.
Principais mudanças desde a versão 1.0.0
Consulte as notas da versão Alfa e Beta da 1.1.0 para mais informações. Algumas das principais atualizações da 1.1.0 são:
- O DataStore agora oferece suporte a vários processos que acessam o mesmo arquivo, com suporte para capacidade de observação em todos os processos.
- A nova interface de armazenamento permite personalizar como armazenar ou serializar seus modelos de dados.
- Agora você pode usar o DataStore em projetos do Kotlin Multiplatform.
Versão 1.1.0-rc01
3 de abril de 2024
Lançamento de androidx.datastore:datastore-*:1.1.0-rc01. A versão 1.1.0-rc01 contém estes commits.
Correções de bugs
- Correção da degradação de desempenho em que as chamadas
updateDatanão eram otimizadas em gravações de disco se os novos dados fossem iguais aos antigos (d64cfb5). - Foi corrigida uma disputa em que
MultiProcessDataStorepodia perder invalidações durante a inicialização. ((b/326141553),(094c2dd))
Versão 1.1.0-beta02
6 de março de 2024
Lançamento de androidx.datastore:datastore-*:1.1.0-beta02. A versão 1.1.0-beta02 contém estes commits.
Correções de bugs
- A melhoria de desempenho no
DataStoresó coleta notificações de atualização quando é observada. (b/267792241)- Essa mudança pode acionar
UncompletedCoroutinesErrornos seus testes se você estiver usando a biblioteca de testes de corrotinas. Para evitar esse problema, transmita oTestScope.backgroundScopeao inicializarDataStorenos testes.
- Essa mudança pode acionar
- Correção do problema de chamadas
updateDataaninhadas na mesma instância que causavam um impasse. (b/241760537). - Fizemos com que
DataStorenão gere maisIOExceptionsse não for possível excluirSharedPreferencesdurante a migração. (b/195553816). - Correção do problema em que a renomeação de arquivos falhava durante
updateDataem ambientes JVM que não são do Android. (b/203087070). - Foi corrigido o problema em que
CorruptionExceptionnão era processado após a inicialização deDataStore. (b/289582516)
Versão 1.1.0-beta01
10 de janeiro de 2024
androidx.datastore:datastore-*:1.1.0-beta01 é lançado sem mudanças desde 1.1.0-alpha07. A versão 1.1.0-beta01 contém estas confirmações.
Versão 1.1.0-alpha07
29 de novembro de 2023
Lançamento de androidx.datastore:datastore-*:1.1.0-alpha07. A versão 1.1.0-alpha07 contém estas confirmações.
Mudanças na API
- Os métodos
MultiProcessDataStoreFactorynão são mais experimentais.A anotação@ExperimentalMultiProcessDataStorefoi totalmente removida. (Ieee54, I8e607)
Correções de bugs
- Implante a remoção das anotações
@ExperimentalMultiProcessDataStorepara a versão 1.1.0-alpha07. (I8e607).
Versão 1.1.0-alpha06
1º de novembro de 2023
Lançamento de androidx.datastore:datastore-*:1.1.0-alpha06. A versão 1.1.0-alpha06 contém estas confirmações.
Mudanças na API
- O método de fábrica
createSingleProcessCoordinatoragora recebe um caminho de arquivo (String,java.io.Fileeokio.Path) para ser consistente comcreateMultiProcessCoordinator. (I211c8, b/305755935)
Versão 1.1.0-alpha05
6 de setembro de 2023
Lançamento de androidx.datastore:datastore-*:1.1.0-alpha05. A versão 1.1.0-alpha05 contém estas confirmações.
Mudanças na API
- O Datastore
FileStoragejá está disponível ao público, então os clientes podem fornecer parâmetros personalizados. (Icb985). - Mudança no construtor
OkioStoragepara aceitar umInterProcessCoordinator, assim ele pode ser usado no Android comMultiProcessCoordinator. (Iecea3).
Correções de bugs
- Correção de
MultiProcessCoordinatorque não consegue monitorar vários arquivos no mesmo diretório. - Correção da falha ao detectar arquivos duplicados quando os caminhos de arquivo não estão normalizados.
- Correção de valores incorretos retornados de
RxDataStore#isDisposed. - Correção da configuração do ProGuard ausente para o artefato
datstore-preferences-core.
Versão 1.1.0-alpha04
5 de abril de 2023
Lançamento de androidx.datastore:datastore-*:1.1.0-alpha04. A versão 1.1.0-alpha04 contém estas confirmações.
Correções de bugs
- Melhoramos a implementação interna para evitar uma condição de disputa em que o fluxo de dados de
DataStorepode emitir um valor mais antigo após uma atualização.
Versão 1.1.0-alpha03
24 de março de 2023
Lançamento de androidx.datastore:datastore-*:1.1.0-alpha03.
Correções de bugs
- As restrições de dependência foram removidas dos artefatos do Maven para contornar um problema de build em destinos nativos do Kotlin (b/274786186, KT-57531).
Versão 1.1.0-alpha02
22 de março de 2023
Lançamento de androidx.datastore:datastore-*:1.1.0-alpha02. A versão 1.1.0-alpha02 contém estas confirmações.
Observação
Esta versão inclui uma refatoração interna importante que mescla as implementações de processo único e multiprocesso do DataStore. Fique de olho em possíveis mudanças de comportamento não intencionais (por exemplo, o horário das notificações de atualização). Você pode usar o componente Issue Tracker para informar essas mudanças.
Novos recursos
- Agora é possível usar o
DataStoreem projetos do KMM. As plataformas que não são Android do DataStore ainda estão em fase experimental, mas decidimos mesclar as versões para facilitar o teste pelos desenvolvedores. - Os recursos de vários processos foram movidos de
androidx.datastore.multiprocessparaandroidx.datastore.core. - Adicione um novo método de fábrica em
androidx.datastore.core.MultiProcessDataStoreFactorypara criar instâncias do DataStore com objetosStoragepara operações de arquivo. - Adicione uma nova interface
InterProcessCoordinatorque ajuda várias instâncias do DataStore a se comunicarem entre processos. A implementação multiprocesso doInterProcessCoordinatorestá disponível apenas no Android.
Mudanças na API
- Adição de
InterProcessCoordinatoraStorageConnectionna interface datastore-core (I555bb). - As APIs no
MultiProcessDataStoreFactoryde datastore-core foram mudadas para que o Storage fosse usado (Iac02f). - As APIs públicas de datastore-multiprocess foram movidas para datastore-core (I76d7c).
PreferencesSerializerfoi exposto no datastore-preferences-core (I4b788).- A anotação
@JvmDefaultWithCompatibilityfoi adicionada (I8f206).
Versão 1.1.0-alpha01
9 de novembro de 2022
Lançamento de androidx.datastore:datastore-*:1.1.0-alpha01. A versão 1.1.0-alpha01 contém estas confirmações.
Novos recursos
- Suporte a casos de uso de vários processos em que a consistência de dados é garantida entre instâncias de
DataStoreem todos os processos.MultiProcessDataStoreFactory#createfoi adicionado para criar essas instâncias deDataStore. - Nova interface de armazenamento, que permite alternar o mecanismo de armazenamento subjacente de
Datastore. Foram fornecidas implementações de java.io e okio. As fábricasDataStoretêm novos métodos que aceitam esse objeto do Storage.
Mudanças na API
- As APIs no
MultiProcessDataStoreFactoryde datastore-core foram mudadas para que o Storage fosse usado (Iac02f). - As APIs públicas de datastore-multiprocess foram movidas para datastore-core (I76d7c).
PreferencesSerializerfoi exposto no datastore-preferences-core (I4b788).
Versão 1.0.0
Versão 1.0.0
4 de agosto de 2021
Lançamento de androidx.datastore:datastore-*:1.0.0. A versão 1.0.0 contém estas confirmações.
Principais recursos da versão 1.0.0
O Jetpack DataStore é uma solução de armazenamento de dados que possibilita armazenar pares de chave-valor ou objetos tipados com buffers de protocolo. O DataStore usa corrotinas e fluxo do Kotlin para armazenar dados de forma assíncrona, consistente e transacional.
Versão 1.0.0-rc02
21 de julho de 2021
Lançamento de androidx.datastore:datastore-*:1.0.0-rc02. A versão 1.0.0-rc02 contém estas confirmações.
Correções de bugs
- Esclarecimento de que a
SharedPreferencesMigrationnão será executada se não houver chaves (Icfa32, b/192824325). - Correção do bug em que a
SharedPreferencesMigrationconstruída comMIGRATE_ALL_KEYSgerava uma exceção se a chave solicitada ainda não existisse (Ie318a, b/192824325).
Versão 1.0.0-rc01
30 de junho de 2021
Lançamento da versão androidx.datastore:datastore-*:1.0.0-rc01. A versão 1.0.0-rc01 contém estas confirmações.
Correções de bugs
- Correção do bug em que o arquivo .java foi adicionado inadvertidamente ao jar final (I65d96, b/188985637)
Versão 1.0.0-beta02
16 de junho de 2021
Lançamento de androidx.datastore:datastore-*:1.0.0-beta02. A versão 1.0.0-beta02 contém estas confirmações.
Correções de bugs
- Correção da
ClassVerificationFailure(b/187450483).
Versão 1.0.0-beta01
21 de abril de 2021
Lançamento de androidx.datastore:datastore-*:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações.
Mudanças na API
- Remoção das sobrecargas JVM para métodos somente em Kotlin (I2adc7).
Correções de bugs
- Correção de um bug em que os repositórios de dados delegados podiam resultar em contextos vazados (Ie96fc, b/184415662)
Versão 1.0.0-alpha08
10 de Março de 2021
Lançamento de androidx.datastore:datastore-*:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações.
Mudanças na API
- Agora você pode adicionar uma migração que depende do contexto aos seus delegados de propriedade
dataStoreepreferencesDataStore(I4ef69, b/173726702). - Foram adicionadas funções auxiliares para acessar o nome do arquivo quando você não está mais usando o repositório de dados delegado ou context.createDataStore (I60f9a).
- O serializador writeTo e readFrom agora são funções de suspensão. Se você implementou um serializador, precisará atualizar suas funções para serem de suspensão (I1e58e).
- Delegados de propriedade foram adicionados para usuários do RxDataStore (Ied768, b/173726702).
Correções de bugs
- Aplicação de restrições ao uso público de APIs experimentais (I6aa29, b/174531520).
Versão 1.0.0-alpha07
24 de fevereiro de 2021
Lançamento de androidx.datastore:datastore-*:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.
Mudanças na API
A função de extensão
Context.createDataStorefoi removida e substituída pelo delegado da propriedade globalDataStore. Chame globalDataStore uma vez no nível superior do arquivo Kotlin. Exemplo:val Context.myDataStore by dataStore(...)Coloque-o no nível superior do seu arquivo Kotlin para que haja apenas uma instância dele (I57215, b/173726702).
As funções RxDataStore agora estão em uma classe RxDataStore em vez de funções de extensão no DataStore (Idccdb, b/177691248).
Se você quiser migrar as EncryptedSharedPreferences (ou SharedPreferences de inicialização direta) para o DataStore, faça isso com o novo construtor SharedPreferencesMigration, que permite injetar as SharedPreferences (I8e04e, b/177278510).
Correções de bugs
- O DataStore agora gerará uma exceção se houver vários DataStores ativos para o mesmo arquivo. Se você não estava gerenciando seu DataStore como um Singleton ou não estava garantindo que duas instâncias de DataStore não fossem ativadas simultaneamente para um arquivo, talvez veja exceções ao ler ou gravar no DataStore. Para corrigir isso, gerencie o DataStore como um Singleton (Ib43f4, b/177691248).
- Correção do comportamento de cancelamento quando o escopo do autor da chamada é cancelado (I2c7b3).
Versão 1.0.0-alpha06
13 de janeiro de 2021
Lançamento do androidx.datastore:datastore-*:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estas confirmações.
Novos recursos
- Adição de wrappers RxJava para DataStore. Os artefatos
datastore-rxjava2/3contêm os wrappers para as principais APIs DataStore (RxDataStore,RxDataStoreBuildereRxDataMigration). Os artefatosdatastore-preferences-rxjava2/3contêm um builder para construir um Preferences DataStore.
Mudanças na API
- Oculte a interface CorruptionHandler. Não é necessário que ela seja pública porque a fábrica do DataStore só aceita um ReplaceFileCorrionHandler (I0b3b3, b/176032264).
- O método
preferencesKey<T>(name: String): Key<T>foi removido e substituído por métodos específicos de cada tipo com suporte. Por exemplo,preferencesKey<Int>("int")agora éintPreferencesKey("int")(Ibcfac b/170311106).
Correções de bugs
- Corrige a documentação no DataStoreFactory, que deixou de fora o fato de que o arquivo de armazenamento de dados é criado no subdiretório "datastoredatastore/" (Ica222).
Versão 1.0.0-alpha05
2 de dezembro de 2020
Lançamento de androidx.datastore:datastore-*:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.
Correções de bugs
- Adição de documentação e exceções melhores em gravações simultâneas de armazenamentos de dados (Ia98a2, b/173522155, b/173726702).
- Agora é permitido, mas não obrigatório, que o OutputStream transmitido para
Serializer.writeTo()seja fechado (I5c9bf, b/173037611).
Versão 1.0.0-alpha04
17 de novembro de 2020
androidx.datastore:datastore-*:1.0.0-alpha04 é lançado. A versão 1.0.0-alpha04 contém estas confirmações.
Correções de bugs
- Correção de um problema de empacotamento que causava a seguinte falha no Datastore de preferências
1.0.0-alpha03:java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences- A falha foi relatada originalmente aqui: b/173036843.
- (I4712d, b/173036843).
Versão 1.0.0-alpha03
11 de novembro de 2020
androidx.datastore:datastore-*:1.0.0-alpha03 é lançado. A versão 1.0.0-alpha03 contém estas confirmações.
Novos recursos
- As preferências agora têm suporte a valores duplos, o que é útil quando é necessário ter uma precisão maior do que pontos flutuantes (I5be8f, b/169471808).
Mudanças na API
- Uma dependência de Kotlin puro foi criada para o armazenamento de dados para permitir uma compilação mais rápida. O
androidx.datastore:datastore-corecontém as APIs essenciais somente do Kotlin, e oandroidx.datastore:datastorecontém as APIs que dependem do Android, incluindoSharedPreferencesMigratione o construtorContext.createDataStore(I42d75, b/168512698). - Divisão de destinos do armazenamento de dados de preferências para compilação mais rápida em Kotlin (Ia3c19).
Agora, os serializadores precisam de uma nova propriedade para o valor padrão que será usado se não houver dados no disco. Isso facilita a implementação de serializadores personalizados para que os usuários não tenham que aplicar casos especiais para fluxos de entrada vazios que não podem ser analisados com JSON.
- Além disso, agora há uma verificação para confirmar que o fluxo de saída fornecido para writeTo() não está fechado. Se estiver, exceções serão geradas (I16e29).
Transformação do construtor para SharedPreferencesView em um elemento interno. Originalmente, ele era público para permitir testes. Agora, os testes precisam construir um SharedPreferencesMigration e fazer um teste comparativo (I93891).
Correções de bugs
- O parâmetro
produceFileemDataStoreFactoryePreferenceDataStoreFactoryagora é o último parâmetro na lista e permite que você use a sintaxe lambda no final do Kotlin (Ibe7f1, b/169425442). - Os novos requisitos explícitos de API para o Kotlin agora são seguidos (I5ae1e).
Problemas conhecidos
- O Datastore de preferências falha com
java.lang.NoClassDefFoundError(b/173036843).
Versão 1.0.0-alpha02
14 de outubro de 2020
Lançamento de androidx.datastore:datastore-core:1.0.0-alpha02 e androidx.datastore:datastore-preferences:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações.
Correções de bugs
- Adição de uma proteção contra mutação no armazenamento de dados principal. A mutação interrompe o uso do armazenamento de dados para pessoas que o usam com tipos não proto/não preferências (I6aa84).
- Adição do método
toStringa Preferences.kt para facilitar a depuração do estado atual (I96006). - Adição de uma exceção para proteger contra o uso indevido de
DataStore.Preferences(I1134d). - Correção de um bug que fazia o app falhar na inicialização (I69237, b/168580258).
Versão 1.0.0-alpha01
2 de setembro de 2020
Lançamento de androidx.datastore:datastore-core:1.0.0-alpha01 e androidx.datastore:datastore-preferences:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estas confirmações.
Novos recursos
O Jetpack Datastore é uma solução de armazenamento de dados nova e aprimorada que visa substituir SharedPreferences. Criado com fluxo e corrotinas de Kotlin, o DataStore oferece duas implementações diferentes:
- DataStore de .proto, que permite armazenar objetos tipados, protegidos por buffers de protocolo.
- Datastore de preferências, que armazena pares de chave-valor.
Os dados são armazenados de forma assíncrona, consistente e transacional, superando a maioria das desvantagens de SharedPreferences.