DataStore
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 21 ตุลาคม 2569 | 1.3.0 | - | - | - |
ประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน DataStore คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
DataStore มีตัวเลือกต่างๆ สำหรับการทำให้เป็นอนุกรม ให้เลือกอย่างใดอย่างหนึ่ง นอกจากนี้ คุณยังเพิ่มทรัพยากร Dependency ที่ไม่ขึ้นอยู่กับ Android ลงในการติดตั้งใช้งานทั้ง 2 แบบได้ด้วย
เพิ่มทรัพยากร Dependency สำหรับการติดตั้งใช้งานที่ต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูล ดังนี้
Preferences DataStore
เพิ่มบรรทัดต่อไปนี้ลงในส่วนทรัพยากร Dependency ของไฟล์ Gradle
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.3.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.3.0" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.3.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.3.0") }
หากต้องการเพิ่มการรองรับ RxJava (ไม่บังคับ) ให้เพิ่มทรัพยากร Dependency ต่อไปนี้
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.3.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.3.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.3.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.3.0") }
DataStore
เพิ่มบรรทัดต่อไปนี้ลงในส่วนทรัพยากร Dependency ของไฟล์ Gradle
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.3.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.3.0" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.3.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.3.0") }
เพิ่มทรัพยากร Dependency ที่ไม่บังคับต่อไปนี้สำหรับการรองรับ RxJava
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.3.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.3.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.3.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.3.0") }
หากต้องการทำให้เนื้อหาเป็นแบบอนุกรม ให้เพิ่มการอ้างอิงสำหรับการทำให้เป็นอนุกรมของ Protocol Buffers หรือ JSON
การซีเรียลไลซ์ JSON
หากต้องการใช้การซีเรียลไลซ์ JSON ให้เพิ่มค่าต่อไปนี้ลงในไฟล์ 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") }
การทำให้เป็นอนุกรม Protobuf
หากต้องการใช้การซีเรียลไลซ์ Protobuf ให้เพิ่มข้อมูลต่อไปนี้ลงในไฟล์ 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") } } } }
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Issue Tracker
เวอร์ชัน 1.3
เวอร์ชัน 1.3.0
21 ตุลาคม 2569
androidx.datastore:datastore-*:1.3.0 เผยแพร่แล้ว เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0
ฟีเจอร์ใหม่
การรองรับพื้นที่เก็บข้อมูลบนเว็บ: เปิดตัวตัวเลือกพื้นที่เก็บข้อมูลบนเว็บของ KMP ซึ่งช่วยให้เก็บรักษาข้อมูลได้อย่างยืดหยุ่นในเป้าหมายเว็บต่างๆ ดังนี้
sessionStorage(WebSessionStorage): อนุญาตให้เก็บข้อมูลชั่วคราวภายในแท็บเบราว์เซอร์เดียวlocalStorage(WebLocalStorage): เปิดใช้พื้นที่เก็บข้อมูลถาวรที่มีการแจ้งเตือนเหตุการณ์และการซิงค์ข้ามแท็บ- Origin Private File System (
WebOpfsStorage): รองรับระบบไฟล์ผ่าน OPFS โดยมี I/O ของไฟล์แบบอะซิงโครนัสและการแจ้งเตือนข้ามแท็บ
การรองรับการเข้ารหัส (
datastore-tink): เพิ่มอาร์ติแฟกต์androidx.datastore:datastore-tinkใหม่ ซึ่งรองรับการเข้ารหัสโดยใช้ไลบรารี Tink โดยจะแนะนำAeadSerializerเพื่อเข้ารหัสและถอดรหัสข้อมูลโดยใช้การเข้ารหัสที่ตรวจสอบสิทธิ์แล้วพร้อมข้อมูลที่เกี่ยวข้อง (AEAD)การรองรับการติดตาม: เพิ่มการรองรับ
androidx.tracingในแพลตฟอร์มเป้าหมาย AndroidDataStore.BuilderAPI: เปิดตัวDataStore.Builder<T>เป็นทางเลือกที่ทันสมัยและปรับขนาดได้แทนDataStoreFactoryโดยต้องใช้CoroutineContextแทนCoroutineScopeเพื่อปรับปรุงการเกิดขึ้นพร้อมกันที่มีโครงสร้างโปรไฟล์พื้นฐาน: เพิ่มโปรไฟล์พื้นฐานลงใน
datastoreเพื่อเพิ่มประสิทธิภาพการเริ่มต้นระบบ
การเปลี่ยนแปลง API
- API
DataStore.Builder,ReThrowCorruptionHandlerและInterProcessCoordinatorได้รับการอัปเดตเป็นpublicแล้ว
แก้ไขข้อบกพร่องและปรับปรุงประสิทธิภาพ
เพิ่มข้อมูลเส้นทางไฟล์ที่สำคัญลงในข้อความ
CorruptionExceptionเพื่อปรับปรุงความสามารถในการแก้ไขข้อบกพร่องระหว่างที่การแยกวิเคราะห์ล้มเหลวแก้ไขข้อมูลที่อาจสูญหายใน
GuavaDataStoreโดยบังคับใช้การจัดลำดับแบบเข้าก่อนออกก่อน (FIFO) ที่เข้มงวดสำหรับการอัปเดต
เวอร์ชัน 1.3.0-rc01
12 ตุลาคม 2569
androidx.datastore:datastore-*:1.3.0-rc01 เผยแพร่แล้ว เวอร์ชัน 1.3.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ใช้
WindowCompat#enableEdgeToEdge(Window)แทนEdgeToEdge#enable()(Ibff3e)
แก้ไขข้อบกพร่อง
- อัปเดตทรัพยากร Dependency
androidx.lifecycle:lifecycle-runtimeเป็น 2.10.0 แล้ว เวอร์ชันนี้จำเป็นสำหรับการตรวจสอบ Lint ของรันไทม์วงจรที่รวมมาให้เพื่อทำงานร่วมกับ 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 กรกฎาคม 2569
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) - ทำให้วงจรการติดตามสอดคล้องกับ System Tracing (Ib391b)
เวอร์ชัน 1.3.0-alpha08
22 เมษายน 2026
androidx.datastore:datastore-*:1.3.0-alpha08 เผยแพร่แล้ว เวอร์ชัน 1.3.0-alpha08 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการรองรับ Origin Private File System (OPFS) ใน DataStore สำหรับแพลตฟอร์มเว็บ การติดตั้งใช้งานนี้จะเปิดตัว
WebOpfsStorageและรวมการรองรับสถาปัตยกรรมสำหรับ I/O ไฟล์แบบอะซิงโครนัส การแจ้งเตือนข้ามแท็บโดยใช้BroadcastChannelAPI และการล็อกแบบกระจายผ่าน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ใหม่ที่รองรับการเข้ารหัส Datastore โดยใช้ไลบรารี Tink โมดูลนี้จะแนะนำAeadSerializerซึ่งเป็นคลาส Wrapper ใหม่ที่ใช้Serializer<T>และใช้ Authenticated Encryption with Associated Data (AEAD) ของ Tink เพื่อเข้ารหัสและถอดรหัสข้อมูลAeadSerializerพร้อมใช้งานในแพลตฟอร์มเป้าหมาย JVM และ Android DataStoreBuilder API ใหม่: เปิดตัวDataStore.Builder<T>เป็นทางเลือกที่ปรับขนาดได้แทนDataStoreFactoryAPI ใหม่นี้ช่วยให้ผู้ใช้ระบุตรรกะความเสียหายของตนเองผ่านsetCorruptionHandlerได้แล้ว นอกจากนี้BuilderAPI ยังกำหนดให้ต้องเริ่มต้นDataStoreโดยใช้CoroutineContextแทนCoroutineScopeซึ่งเป็นการปรับปรุงการทำงานพร้อมกันแบบมีโครงสร้าง เนื่องจากช่วยให้ผู้เรียกสามารถกำหนดลักษณะการทำงานของการดำเนินการ (เช่น Dispatcher ที่เฉพาะเจาะจง) โดยไม่ต้องบังคับให้DataStoreจัดการหรือผูกกับวงจรของขอบเขตของผู้เรียกอย่างไม่เหมาะสมหมายเหตุ: เราขอแนะนำให้ผู้ใช้ทุกคนย้ายข้อมูลจาก
DataStoreFactoryไปยัง APIDataStore.Builderใหม่ การกำหนดให้ใช้CoroutineContextแทนCoroutineScopeจะทำให้ API บังคับใช้การทำงานพร้อมกันที่มีโครงสร้างดีขึ้น ซึ่งจะช่วยให้มั่นใจได้ว่าการดำเนินการของ DataStore จะไม่ผูกกับวงจร UI ที่มีอายุสั้น (เช่นviewModelScope) ซึ่งจะช่วยป้องกันการยกเลิกก่อนเวลาอันควรและการสูญหายของข้อมูลที่อาจเกิดขึ้นคำเตือน: ตรวจสอบว่า
CoroutineContextที่ระบุให้กับ Builder มีJobและมีขอบเขตระดับแอปพลิเคชัน หากบริบทถูกยกเลิก การดำเนินการภายในของDataStoreจะสิ้นสุดลงก่อนเวลาอันควร
การเปลี่ยนแปลง API
เปิดตัวอาร์ติแฟกต์
androidx.datastore:datastore-tinkใหม่สำหรับการรองรับการเข้ารหัสDataStore(Ic106d, b/167697691)หากต้องการเข้ารหัสข้อมูลโดยใช้ Tink ให้ทำตามขั้นตอนต่อไปนี้
สร้างคีย์โดยใช้ Tink API
val keysetHandle = AndroidKeysetManager.Builder() .withSharedPref(applicationContext, "keyset", "keyset_prefs") .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM)) .withMasterKeyUri("android-keystore://master_key") .build() .keysetHandleสร้าง
AeadSerializerที่รวม Serializer ที่มีอยู่val aeadSerializer = AeadSerializer( // Use tink APIs to create an Aead object to encrypt/decrypt data. aead = keysetHandle.getPrimitive( RegistryConfiguration.get(), Aead::class.java, ), // AeadSerializer can wrap an existing serializer. wrappedSerializer = ExistingSerializer, // Specify a unique name to prevent a ciphertext swapping attack. associatedData = "settings.json".encodeToByteArray(), )ใช้
aeadSerializerนี้แทน Serializer เมื่อสร้างอินสแตนซ์ Datastore ดังนี้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 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มโปรไฟล์พื้นฐานลงใน Datastore แล้ว (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)
- แก้ไขปัญหาเพื่อป้องกันไม่ให้การอัปเดตถูกยกเลิกระหว่างการอ่าน/เขียนพร้อมกัน ภาวะแข่งขันอาจเกิดขึ้นระหว่าง Collector ใหม่ใน
DataStore.dataและการเรียกupdateDataที่เกิดขึ้นพร้อมกัน ซึ่งทำให้ Collector พลาดค่าใหม่ (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โดยใช้sessionStorageAPI ฟีเจอร์นี้ช่วยให้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 และ GuavaListenableFutureผ่านGuavaDataStore - เพิ่มการรองรับหลายกระบวนการภายใน
GuavaDataStore - เพิ่มโอเวอร์โหลดสำหรับ
GuavaDataStore.fromที่ยอมรับExecutorของ Java (แทนCoroutineContext) และใช้androidx.core.util.Function
การรองรับ Direct Boot:
- ตอนนี้ระบบรองรับการใช้งาน DataStore ระหว่างโหมด Direct Boot แล้ว API ใหม่ๆ เช่น
createInDeviceProtectedStorage()ในDataStoreFactoryและdeviceProtectedDataStore()ในDataStoreDelegateช่วยให้สร้าง DataStore ภายในพื้นที่เก็บข้อมูลที่ได้รับการปกป้องของอุปกรณ์ได้
การเปลี่ยนแปลงพื้นที่เก็บข้อมูลและ API:
- เพิ่ม
PreferencesFileSerializerที่ใช้androidx.datastore.core.Serializerเพื่อใช้กับFileStorageแล้ว - กำหนดคอนสตรัคเตอร์เริ่มต้นสำหรับ
ReplaceFileCorruptionHandlerเพื่อการใช้งานโค้ดทั่วไป
แก้ไขข้อบกพร่อง
- แก้ไข
java.lang.UnsatisfiedLinkErrorเมื่อใช้DataStoreในแอปที่เพิ่มประสิทธิภาพด้วย R8 แต่ไม่ได้ใช้ไฟล์ ProGuard มาตรฐาน - แก้ไขปัญหาที่การดำเนินการ
GuavaDataStoreอาจทำงานอย่างไม่ถูกต้องในเทรดการเรียก (เช่น เทรดหลัก) แทนที่จะเป็น Dispatcher ของ IO ที่ระบุ - แก้ไขปัญหา
FileNotFoundExceptionในOkioStorageเมื่อเริ่มต้นระบบโดยเพิ่มการพยายามอ่านข้อมูลครั้งที่ 2 ในกรณีที่เกิดภาวะแข่งขัน
เวอร์ชัน 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อาจทำงานอย่างไม่ถูกต้องในเทรดการเรียก (เช่น เทรดหลัก) แทนที่จะเป็น IO Dispatcher ที่ระบุ (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เพื่อแสดง API ที่เหมาะกับผู้ใช้ Java และ GuavaListenableFutureผ่านGuavaDataStore(Iadd5e0) - ตอนนี้ระบบรองรับการใช้งาน
DataStoreระหว่างโหมดDirectBootแล้ว หากต้องการสร้าง Datastore เพื่อใช้ในโหมดเปิดเครื่องโดยตรง คุณต้องสร้าง Datastore ภายในพื้นที่เก็บข้อมูลที่ได้รับการปกป้องของอุปกรณ์ ซึ่งทำได้โดยใช้ APIDataStoreใหม่ต่อไปนี้createInDeviceProtectedStorage()ในDataStoreFactoryและdeviceProtectedDataStore()ในDataStoreDelegate(Ib90e56)
การเปลี่ยนแปลง API
- เพิ่ม
PreferencesFileSerializerที่ใช้อินเทอร์เฟซandroidx.datastore.core.Serializerเพื่อใช้กับFileStorageแล้ว (I4c71f3)
แก้ไขข้อบกพร่อง
- แก้ไขปัญหา
FileNotFoundExceptionในOkioStorageเมื่อเริ่มต้นระบบโดยเพิ่มการพยายามอ่านข้อมูลครั้งที่ 2 ในกรณีที่เกิดภาวะแข่งขัน (I43b3fb, b/337870543) - กำหนดคอนสตรัคเตอร์เริ่มต้นสำหรับ
ReplaceFileCorruptionHandlerเพื่อการใช้งานโค้ดทั่วไป (I795b05, b/358138957)
เวอร์ชัน 1.1
เวอร์ชัน 1.1.7
20 พฤษภาคม 2025
androidx.datastore:datastore-*:1.1.7 เผยแพร่แล้ว เวอร์ชัน 1.1.7 มี คอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับกฎ Proguard ที่ขาดหายไปในอาร์ติแฟกต์ Android ของ
datastore-preferences-core(3f3f6e, b/413078297)
เวอร์ชัน 1.1.6
7 พฤษภาคม 2025
androidx.datastore:datastore-*:1.1.6 เผยแพร่แล้ว เวอร์ชัน 1.1.6 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่ข้อมูลเมตา Gradle เสียหายในเวอร์ชัน
1.1.5ปัญหานี้เกิดจากข้อบกพร่องใน DSL ของปลั๊กอิน AGP KMP ใหม่ที่ป้องกันไม่ให้รวมข้อมูลเมตาสำหรับแพลตฟอร์มเป้าหมายทั้งหมดโดยอัตโนมัติ ข้อบกพร่องนี้ทำให้เมธอด DataStore Android บางรายการไม่ปรากฏในบิลด์ของไคลเอ็นต์อีกต่อไป การแก้ไขเกี่ยวข้องกับการใช้ DSLandroidเวอร์ชันเก่าในbuild.gradleแทนandroidLibrary(7801abf)
เวอร์ชัน 1.1.5
23 เมษายน 2025
androidx.datastore:datastore-*:1.1.5 เผยแพร่แล้ว เวอร์ชัน 1.1.5 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- เพื่อลดปัญหา
CorruptionExceptionในPreferencesDataStoreระบบจึงเปลี่ยนพื้นที่เก็บข้อมูลเริ่มต้นจากOkioStorageเป็นFileStorageการเปลี่ยนแปลงนี้ดำเนินการโดยการเปิดตัวPreferencesFileSerializerb/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ที่พบเมื่อเริ่มต้นแอป หากการพยายามอ่านไฟล์ครั้งแรกไม่สำเร็จ ระบบจะพยายามอ่านไฟล์ครั้งที่ 2 ในกรณีที่เกิดภาวะแข่งขันเนื่องจากไฟล์ถูกสร้างขึ้นโดยกระบวนการอื่นในระหว่างการอ่านครั้งแรก (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) - แก้ไขภาวะแข่งขันที่
MultiProcessDataStoreอาจพลาดการทำให้เป็นโมฆะระหว่างการเริ่มต้น ((b/326141553),(094c2dd))
เวอร์ชัน 1.1.0-beta02
6 มีนาคม 2024
androidx.datastore:datastore-*:1.1.0-beta02 เผยแพร่แล้ว เวอร์ชัน 1.1.0-beta02 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- การปรับปรุงประสิทธิภาพใน
DataStoreจะรวบรวมเฉพาะการแจ้งเตือนการอัปเดตเมื่อตรวจพบเท่านั้น (b/267792241)- โปรดทราบว่าการเปลี่ยนแปลงนี้อาจทริกเกอร์
UncompletedCoroutinesErrorในการทดสอบหากคุณใช้ไลบรารีการทดสอบ Coroutine ตรวจสอบว่าคุณส่งTestScope.backgroundScopeเมื่อเริ่มต้นDataStoreในการทดสอบเพื่อหลีกเลี่ยงปัญหานี้
- โปรดทราบว่าการเปลี่ยนแปลงนี้อาจทริกเกอร์
- แก้ไขปัญหาการเรียก
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
- Datastore
FileStorageพร้อมให้บริการแก่สาธารณะแล้ว ลูกค้าจึงระบุพารามิเตอร์ที่กำหนดเองได้ (Icb985) - เปลี่ยนตัวสร้าง
OkioStorageให้ยอมรับInterProcessCoordinatorเพื่อให้ใช้ใน Android กับMultiProcessCoordinatorได้ (Iecea3)
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
MultiProcessCoordinatorไม่สามารถตรวจสอบไฟล์หลายรายการในไดเรกทอรีเดียวกัน - แก้ไขปัญหาที่ระบบตรวจหาไฟล์ที่ซ้ำกันไม่ได้หากเส้นทางไฟล์ไม่ได้รับการปรับให้เป็นมาตรฐาน
- แก้ไขค่าที่ไม่ถูกต้องซึ่งแสดงผลจาก
RxDataStore#isDisposed - แก้ไขการกำหนดค่า ProGuard ที่ขาดหายไปสำหรับอาร์ติแฟกต์
datstore-preferences-core
เวอร์ชัน 1.1.0-alpha04
5 เมษายน 2023
androidx.datastore:datastore-*:1.1.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ปรับปรุงการติดตั้งใช้งานภายในเพื่อหลีกเลี่ยงภาวะแข่งขันที่กระแสข้อมูลของ
DataStoreอาจแสดงค่าที่เก่ากว่าหลังจากการอัปเดต
เวอร์ชัน 1.1.0-alpha03
24 มีนาคม 2023
androidx.datastore:datastore-*:1.1.0-alpha03 เผยแพร่แล้ว
แก้ไขข้อบกพร่อง
- นำข้อจำกัดของทรัพยากร Dependency ออกจากอาร์ติแฟกต์ Maven เพื่อแก้ปัญหาเกี่ยวกับบิลด์ใน Kotlin Native Target (b/274786186, KT-57531)
เวอร์ชัน 1.1.0-alpha02
22 มีนาคม 2023
androidx.datastore:datastore-*:1.1.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
หมายเหตุ
โปรดทราบว่าเวอร์ชันนี้มีการเปลี่ยนโครงสร้างภายในโค้ดที่สำคัญซึ่งรวมการใช้งาน DataStore แบบกระบวนการเดียวและหลายกระบวนการเข้าด้วยกัน โปรดคอยสังเกตการเปลี่ยนแปลงลักษณะการทำงานที่อาจไม่ได้ตั้งใจ (เช่น เวลาของการแจ้งเตือนการอัปเดต) คุณสามารถใช้ Issue Tracker เพื่อรายงานการเปลี่ยนแปลงดังกล่าวได้
ฟีเจอร์ใหม่
- ตอนนี้คุณใช้
DataStoreในโปรเจ็กต์ KMM ได้แล้ว โปรดทราบว่าเป้าหมายที่ไม่ใช่ Android ของ DataStore ยังอยู่ระหว่างการทดสอบ แต่เราตัดสินใจรวมเวอร์ชันต่างๆ เพื่อให้นักพัฒนาแอปทดลองใช้ได้ง่ายขึ้น - ย้ายฟีเจอร์หลายกระบวนการจาก
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 ใช้โครูทีนและ Flow ของ Kotlin เพื่อจัดเก็บข้อมูลแบบอะซิงโครนัส สอดคล้อง และเป็นธุรกรรม
เวอร์ชัน 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 Overload สำหรับเมธอด Kotlin เท่านั้นออก (I2adc7)
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ตัวแทน Datastore อาจทำให้บริบทรั่วไหล (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) - เพิ่มฟังก์ชันตัวช่วยเพื่อรับชื่อไฟล์หากคุณไม่ได้ใช้ตัวแทน Datastore หรือ context.createDataStore อีกต่อไป (I60f9a)
- ตอนนี้ Serializer 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 1 ครั้งที่ระดับบนสุดในไฟล์ Kotlin เช่นval Context.myDataStore by dataStore(...)วางโค้ดนี้ไว้ที่ระดับบนสุดของไฟล์ Kotlin เพื่อให้มีอินสแตนซ์เพียงรายการเดียว (I57215, b/173726702)
ตอนนี้ฟังก์ชัน RxDataStore อยู่ในคลาส RxDataStore แทนฟังก์ชันส่วนขยายใน DataStore (Idccdb, b/177691248)
หากต้องการย้ายข้อมูล EncryptedSharedPreferences (หรือ SharedPreferences สำหรับการเปิดเครื่องโดยตรง) ไปยัง DataStore ตอนนี้คุณสามารถทำได้ด้วย SharedPreferencesMigration Constructor ใหม่ที่ช่วยให้คุณแทรก SharedPreferences ได้ (I8e04e, b/177278510)
แก้ไขข้อบกพร่อง
- ตอนนี้ Datastore จะแสดงข้อยกเว้นหากมี Datastore ที่ใช้งานอยู่หลายรายการสำหรับไฟล์เดียวกัน หากคุณไม่ได้จัดการ DataStore เป็น Singleton หรือไม่ได้ตรวจสอบว่าไม่มีอินสแตนซ์ DataStore 2 รายการที่ทำงานพร้อมกันสำหรับไฟล์หนึ่งๆ คุณอาจเห็นข้อยกเว้นเมื่ออ่านหรือเขียนลงใน DataStore ซึ่งแก้ไขได้โดยการจัดการ DataStore เป็น Singleton (Ib43f4, b/177691248)
- แก้ไขลักษณะการทำงานของการยกเลิกเมื่อขอบเขตของผู้โทรถูกยกเลิก (I2c7b3)
เวอร์ชัน 1.0.0-alpha06
13 มกราคม 2021
androidx.datastore:datastore-*:1.0.0-alpha06 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม Wrapper ของ RxJava สำหรับ DataStore อาร์ติแฟกต์
datastore-rxjava2/3มี Wrapper สำหรับ Datastore API หลัก (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 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- เพิ่มเอกสารประกอบและข้อยกเว้นที่ดีขึ้นเกี่ยวกับการเขียนพร้อมกันจาก Datastore (Ia98a2, b/173522155, b/173726702)
- ตอนนี้เราอนุญาต (แต่ไม่บังคับ) ให้ปิด OutputStream ที่ส่งไปยัง
Serializer.writeTo()ได้ (I5c9bf, b/173037611)
เวอร์ชัน 1.0.0-alpha04
พฤศจิกายน 17, 2020
androidx.datastore:datastore-*:1.0.0-alpha04 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับแพ็กเกจที่ทำให้เกิดข้อขัดข้องต่อไปนี้ใน Preference Datastore
1.0.0-alpha03:java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences- รายงานข้อขัดข้องนี้ครั้งแรกที่ b/173036843
- (I4712d, b/173036843)
เวอร์ชัน 1.0.0-alpha03
11 พฤศจิกายน 2020
androidx.datastore:datastore-*:1.0.0-alpha03 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้ค่ากำหนดรองรับค่า Double (ซึ่งมีประโยชน์หากคุณต้องการความแม่นยำมากกว่าค่า Float) (I5be8f, b/169471808)
การเปลี่ยนแปลง API
- สร้างทรัพยากร Dependency ของ Kotlin ล้วนสำหรับ Datastore เพื่อให้คอมไพล์ได้เร็วขึ้น
androidx.datastore:datastore-coreมี API เฉพาะ Kotlin หลัก และandroidx.datastore:datastoreมี API ที่ขึ้นอยู่กับ Android (รวมถึงSharedPreferencesMigrationและคอนสตรักเตอร์Context.createDataStore)(I42d75, b/168512698) - แยกเป้าหมายสำหรับพื้นที่เก็บข้อมูลค่ากำหนดเพื่อให้คอมไพล์ Kotlin ได้เร็วขึ้น (Ia3c19)
ตอนนี้ Serializer ต้องมีพร็อพเพอร์ตี้ใหม่สำหรับค่าเริ่มต้นที่จะใช้หากไม่มีข้อมูลในดิสก์ ซึ่งจะช่วยให้ติดตั้งใช้งาน Serializer ที่กำหนดเองได้ง่ายขึ้น เพื่อให้ผู้ใช้ไม่ต้องใช้สตรีมอินพุตที่ว่างเปล่าในกรณีพิเศษ (สตรีมอินพุตที่ว่างเปล่าจะไม่แยกวิเคราะห์ด้วย JSON)
- นอกจากนี้ ตอนนี้ยังมีการตรวจสอบเพื่อยืนยันว่าสตรีมเอาต์พุตที่ส่งไปยัง writeTo() ไม่ได้ปิดอยู่ และหากปิดอยู่ ระบบจะแสดงข้อยกเว้น (I16e29)
การทำให้คอนสตรัคเตอร์สำหรับ SharedPreferencesView เป็นแบบภายใน เดิมทีแอปนี้เป็นแบบสาธารณะเพื่อให้ทดสอบได้ แต่การทดสอบควรสร้าง SharedPreferencesMigration และทดสอบกับสิ่งนั้นแทน (I93891)
แก้ไขข้อบกพร่อง
- ตอนนี้พารามิเตอร์
produceFileในDataStoreFactoryและPreferenceDataStoreFactoryเป็นพารามิเตอร์สุดท้ายในรายการแล้ว คุณจึงใช้ไวยากรณ์ Lambda ต่อท้ายของ Kotlin ได้ (Ibe7f1, b/169425442) - เป็นไปตามข้อกำหนด API ที่ชัดเจนใหม่สำหรับ Kotlin (I5ae1e)
ปัญหาที่ทราบ
- Preference Datastore ขัดข้องพร้อมข้อความ
java.lang.NoClassDefFoundError(b/173036843)
เวอร์ชัน 1.0.0-alpha02
14 ตุลาคม 2020
androidx.datastore:datastore-core:1.0.0-alpha02 และ androidx.datastore:datastore-preferences:1.0.0-alpha02 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- เพิ่มการป้องกันการกลายพันธุ์ใน datastore-core การเปลี่ยนแปลงทำให้การใช้ Datastore สำหรับผู้ที่ใช้ Datastore กับประเภทที่ไม่ใช่ Proto/ไม่ใช่ค่ากำหนดใช้งานไม่ได้ (I6aa84)
- เพิ่มเมธอด
toStringลงใน Preferences.kt เพื่อให้แก้ไขข้อบกพร่องของสถานะปัจจุบันได้ง่าย (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 สร้างขึ้นจากโครูทีนและ Flow ของ Kotlin โดยมีการใช้งาน 2 แบบที่แตกต่างกัน ดังนี้
- Proto DataStore ซึ่งช่วยให้คุณจัดเก็บออบเจ็กต์ที่พิมพ์ได้ (สนับสนุนโดยบัฟเฟอร์โปรโตคอล)
- Preferences DataStore ซึ่งจัดเก็บคู่คีย์-ค่า
ข้อมูลจะได้รับการจัดเก็บแบบอะซิงโครนัส สอดคล้องกัน และเป็นธุรกรรม ซึ่งจะช่วยแก้ข้อเสียส่วนใหญ่ของ SharedPreferences ได้