DataStore
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 19 พฤศจิกายน 2025 | 1.2.0 | - | - | 1.3.0-alpha01 |
ประกาศทรัพยากร Dependency
หากต้องการเพิ่มการอ้างอิงใน DataStore คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
DataStore มีตัวเลือกต่างๆ สำหรับการซีเรียลไลซ์ ให้เลือกตัวเลือกใดตัวเลือกหนึ่ง นอกจากนี้ คุณยังเพิ่มการอ้างอิงที่ไม่มี Android ลงใน การติดตั้งใช้งานได้ด้วย
เพิ่มทรัพยากร Dependency สำหรับการติดตั้งใช้งานที่คุณต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
Preferences DataStore
เพิ่มบรรทัดต่อไปนี้ลงในส่วนทรัพยากร Dependency ของไฟล์ Gradle
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.0" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.2.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.2.0") }
หากต้องการเพิ่มการรองรับ RxJava (ไม่บังคับ) ให้เพิ่มทรัพยากร Dependency ต่อไปนี้
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.2.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.2.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.2.0") }
DataStore
เพิ่มบรรทัดต่อไปนี้ลงในส่วนทรัพยากร Dependency ของไฟล์ Gradle
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.0" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.0" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.2.0") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.2.0") }
เพิ่มทรัพยากร Dependency ที่ไม่บังคับต่อไปนี้สำหรับการรองรับ RxJava
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.0" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.0" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.0") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.0") }
หากต้องการทำให้เนื้อหาเป็นแบบอนุกรม ให้เพิ่มการอ้างอิงสำหรับการทำให้เป็นอนุกรมของ Protocol Buffers หรือ JSON
การซีเรียลไลซ์ JSON
หากต้องการใช้การซีเรียลไลซ์ JSON ให้เพิ่มค่าต่อไปนี้ลงในไฟล์ Gradle
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 ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.3
เวอร์ชัน 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.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 ในโหมดการบูตโดยตรงแล้ว API ใหม่ๆ เช่น
createInDeviceProtectedStorage()ในDataStoreFactoryและdeviceProtectedDataStore()ในDataStoreDelegateช่วยให้สร้าง DataStore ภายในพื้นที่เก็บข้อมูลที่ปกป้องด้วยอุปกรณ์ได้
การเปลี่ยนแปลงพื้นที่เก็บข้อมูลและ API:
- เพิ่ม
PreferencesFileSerializerที่ใช้androidx.datastore.core.Serializerเพื่อใช้กับFileStorage - กำหนดตัวสร้างเริ่มต้นสำหรับ
ReplaceFileCorruptionHandlerสำหรับการใช้งานโค้ดทั่วไป
การแก้ไขข้อบกพร่อง:
- แก้ไขปัญหา
java.lang.UnsatisfiedLinkErrorเมื่อใช้DataStoreในแอปที่เพิ่มประสิทธิภาพด้วย R8 แต่ไม่ได้ใช้ไฟล์ ProGuard มาตรฐาน - แก้ไขปัญหาที่การดำเนินการ
GuavaDataStoreอาจทำงานอย่างไม่ถูกต้องในเทรดที่เรียก (เช่น เทรดหลัก) แทนที่จะเป็นตัวจัดสรร 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 ที่ระบุ (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แล้ว หากต้องการสร้างที่เก็บข้อมูลที่จะใช้ในโหมดการบูตโดยตรง คุณต้องสร้างที่เก็บข้อมูลดังกล่าวภายในที่เก็บข้อมูลที่อุปกรณ์ป้องกัน ซึ่งทำได้โดยใช้DataStoreAPI ใหม่ต่อไปนี้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 ใหม่ ซึ่งป้องกันไม่ให้รวมข้อมูลเมตาสำหรับแพลตฟอร์มเป้าหมายทั้งหมดโดยอัตโนมัติ ข้อบกพร่องนี้ทำให้เมธอด Android ของ DataStore บางรายการไม่ปรากฏในการสร้างของไคลเอ็นต์อีกต่อไป การแก้ไขเกี่ยวข้องกับการใช้ 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ที่พบเมื่อเริ่มต้นแอป หากการอ่านไฟล์ครั้งแรกไม่สำเร็จ ระบบจะพยายามอ่านอีกครั้งในกรณีที่เกิดสภาวะการแข่งขันเนื่องจากไฟล์ถูกสร้างขึ้นโดยกระบวนการอื่นในระหว่างการอ่านครั้งแรก (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 รองรับหลายกระบวนการที่เข้าถึงไฟล์เดียวกัน โดยรองรับการสังเกตการณ์ในกระบวนการต่างๆ
- อินเทอร์เฟซพื้นที่เก็บข้อมูลใหม่ช่วยให้คุณปรับแต่งวิธีจัดเก็บหรือแปลงรูปแบบโมเดลข้อมูลได้
- ตอนนี้คุณใช้ DataStore ในโปรเจ็กต์ Kotlin Multiplatform ได้แล้ว
เวอร์ชัน 1.1.0-rc01
3 เมษายน 2024
ระบบจะถอนการอ้างสิทธิ์androidx.datastore:datastore-*:1.1.0-rc01 เวอร์ชัน 1.1.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขประสิทธิภาพที่ลดลงซึ่ง
updateDataไม่ได้เพิ่มประสิทธิภาพในการเขียนดิสก์หากข้อมูลใหม่เหมือนกับข้อมูลเก่า (d64cfb5) - แก้ไข Race Condition ที่
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ในการทดสอบหากคุณใช้ไลบรารีการทดสอบ Coroutines โปรดตรวจสอบว่าคุณส่ง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 (b/274786186, KT-57531)
เวอร์ชัน 1.1.0-alpha02
22 มีนาคม 2023
ระบบจะถอนการอ้างสิทธิ์androidx.datastore:datastore-*:1.1.0-alpha02 เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
หมายเหตุ
โปรดทราบว่าเวอร์ชันนี้มีการปรับโครงสร้างภายในที่สำคัญซึ่งผสานรวมการใช้งานสำหรับ DataStore แบบกระบวนการเดียวและการใช้งาน DataStore แบบหลายกระบวนการ โปรดคอยสังเกตการเปลี่ยนแปลงลักษณะการทำงานที่อาจเกิดขึ้นโดยไม่ตั้งใจ (เช่น เวลาในการแจ้งเตือนการอัปเดต) คุณใช้คอมโพเนนต์เครื่องมือติดตามปัญหาเพื่อรายงานการเปลี่ยนแปลงดังกล่าวได้
ฟีเจอร์ใหม่
- ตอนนี้คุณใช้
DataStoreในโปรเจ็กต์ KMM ได้แล้ว โปรดทราบว่าเป้าหมายที่ไม่ใช่ Android ของ DataStore ยังคงเป็นเวอร์ชันทดลอง แต่เราตัดสินใจที่จะผสานรวมเวอร์ชันต่างๆ เพื่อให้นักพัฒนาแอปทดลองใช้ได้ง่ายขึ้น - ระบบได้ย้ายฟีเจอร์แบบหลายกระบวนการจาก
androidx.datastore.multiprocessไปยังandroidx.datastore.core - เพิ่มเมธอด Factory ใหม่ใน
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 และ okioDataStoreมีเมธอดใหม่ที่ยอมรับออบเจ็กต์ 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 เป็นโซลูชันพื้นที่เก็บข้อมูลที่ช่วยให้คุณจัดเก็บคู่คีย์-ค่าหรือออบเจ็กต์ที่พิมพ์ด้วย Protocol Buffer ได้ 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 สำหรับเมธอด 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) - เพิ่มฟังก์ชันตัวช่วยเพื่อรับชื่อไฟล์หากคุณไม่ได้ใช้ DatastoreDelegate หรือ 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 หนึ่งครั้งที่ระดับบนสุดในไฟล์ Kotlin เช่นval Context.myDataStore by dataStore(...)วางไว้ที่ระดับบนสุดของไฟล์ Kotlin เพื่อให้มีอินสแตนซ์เดียวเท่านั้น (I57215, b/173726702)
ตอนนี้ฟังก์ชัน RxDataStore อยู่ในคลาส RxDataStore แทนที่จะเป็นฟังก์ชันส่วนขยายใน DataStore (Idccdb, b/177691248)
หากต้องการย้ายข้อมูล EncryptedSharedPreferences (หรือ SharedPreferences ที่บูตโดยตรง) ไปยัง DataStore ตอนนี้คุณสามารถทำได้แล้วด้วยตัวสร้าง SharedPreferencesMigration ใหม่ที่ช่วยให้คุณแทรก SharedPreferences ได้ (I8e04e, b/177278510)
การแก้ไขข้อบกพร่อง
- ตอนนี้ DataStore จะแสดงข้อยกเว้นหากมี DataStore ที่ใช้งานอยู่หลายรายการสำหรับไฟล์เดียวกัน หากคุณไม่ได้จัดการ DataStore เป็น 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มี Builder สำหรับสร้าง 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 ในไดเรกทอรีย่อย "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
- สร้างการอ้างอิง 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 และทดสอบกับ 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