DataStore

จัดเก็บข้อมูลแบบอะซิงโครนัส สอดคล้องกัน และเป็นธุรกรรม ซึ่งช่วยแก้ข้อเสียบางประการของ SharedPreferences
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
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 ในแพลตฟอร์มเป้าหมาย Android

  • DataStore.Builder API: เปิดตัว 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 ไฟล์แบบอะซิงโครนัส การแจ้งเตือนข้ามแท็บโดยใช้ BroadcastChannel API และการล็อกแบบกระจายผ่าน 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
  • DataStore Builder API ใหม่: เปิดตัว DataStore.Builder<T> เป็นทางเลือกที่ปรับขนาดได้แทน DataStoreFactory API ใหม่นี้ช่วยให้ผู้ใช้ระบุตรรกะความเสียหายของตนเองผ่าน setCorruptionHandler ได้แล้ว นอกจากนี้ Builder API ยังกำหนดให้ต้องเริ่มต้น DataStore โดยใช้ CoroutineContext แทน CoroutineScope ซึ่งเป็นการปรับปรุงการทำงานพร้อมกันแบบมีโครงสร้าง เนื่องจากช่วยให้ผู้เรียกสามารถกำหนดลักษณะการทำงานของการดำเนินการ (เช่น Dispatcher ที่เฉพาะเจาะจง) โดยไม่ต้องบังคับให้ DataStore จัดการหรือผูกกับวงจรของขอบเขตของผู้เรียกอย่างไม่เหมาะสม

    หมายเหตุ: เราขอแนะนำให้ผู้ใช้ทุกคนย้ายข้อมูลจาก DataStoreFactory ไปยัง API DataStore.Builder ใหม่ การกำหนดให้ใช้ CoroutineContext แทน CoroutineScope จะทำให้ API บังคับใช้การทำงานพร้อมกันที่มีโครงสร้างดีขึ้น ซึ่งจะช่วยให้มั่นใจได้ว่าการดำเนินการของ DataStore จะไม่ผูกกับวงจร UI ที่มีอายุสั้น (เช่น viewModelScope) ซึ่งจะช่วยป้องกันการยกเลิกก่อนเวลาอันควรและการสูญหายของข้อมูลที่อาจเกิดขึ้น

    คำเตือน: ตรวจสอบว่า CoroutineContext ที่ระบุให้กับ Builder มี Job และมีขอบเขตระดับแอปพลิเคชัน หากบริบทถูกยกเลิก การดำเนินการภายในของ DataStore จะสิ้นสุดลงก่อนเวลาอันควร

การเปลี่ยนแปลง API

  • เปิดตัวอาร์ติแฟกต์ androidx.datastore:datastore-tink ใหม่สำหรับการรองรับการเข้ารหัส DataStore (Ic106d, b/167697691)

    หากต้องการเข้ารหัสข้อมูลโดยใช้ Tink ให้ทำตามขั้นตอนต่อไปนี้

    1. สร้างคีย์โดยใช้ Tink API

      val keysetHandle =
          AndroidKeysetManager.Builder()
              .withSharedPref(applicationContext, "keyset", "keyset_prefs")
              .withKeyTemplate(KeyTemplate.createFrom(PredefinedAeadParameters.AES256_GCM))
              .withMasterKeyUri("android-keystore://master_key")
              .build()
              .keysetHandle
      
    2. สร้าง AeadSerializer ที่รวม 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(),
      )
      
    3. ใช้ 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 โดยใช้ sessionStorage API ฟีเจอร์นี้ช่วยให้ DataStore เก็บข้อมูลไว้ชั่วคราวภายในแท็บเบราว์เซอร์เดียวได้ (I60fad, b/316376114)

เวอร์ชัน 1.2

เวอร์ชัน 1.2.1

11 มีนาคม 2026

androidx.datastore:datastore-*:1.2.1 เผยแพร่แล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้

ไม่มีการเปลี่ยนแปลง

  • รุ่นนี้มีการแก้ไขข้อบกพร่องเล็กน้อยเกี่ยวกับโครงสร้างพื้นฐาน และไม่มีการเปลี่ยนแปลง Datastore API หรือลักษณะการทำงานจากเวอร์ชัน 1.2.0

เวอร์ชัน 1.2.0

19 พฤศจิกายน 2025

androidx.datastore:datastore-*:1.2.0 เผยแพร่แล้ว เวอร์ชัน 1.2.0 มี คอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่รุ่น 1.1.0

การสนับสนุน Java/Guava:

  • เพิ่มโมดูล datastore-guava ใหม่เพื่อแสดง API ที่เหมาะกับผู้ใช้ Java และ Guava ListenableFuture ผ่าน GuavaDataStore
  • เพิ่มการรองรับหลายกระบวนการภายใน GuavaDataStore
  • เพิ่มโอเวอร์โหลดสำหรับ GuavaDataStore.from ที่ยอมรับ 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 และ Guava ListenableFuture ผ่าน GuavaDataStore (Iadd5e0)
  • ตอนนี้ระบบรองรับการใช้งาน DataStore ระหว่างโหมดDirectBootแล้ว หากต้องการสร้าง Datastore เพื่อใช้ในโหมดเปิดเครื่องโดยตรง คุณต้องสร้าง Datastore ภายในพื้นที่เก็บข้อมูลที่ได้รับการปกป้องของอุปกรณ์ ซึ่งทำได้โดยใช้ API DataStore ใหม่ต่อไปนี้ 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 บางรายการไม่ปรากฏในบิลด์ของไคลเอ็นต์อีกต่อไป การแก้ไขเกี่ยวข้องกับการใช้ DSL android เวอร์ชันเก่าใน build.gradle แทน androidLibrary (7801abf)

เวอร์ชัน 1.1.5

23 เมษายน 2025

androidx.datastore:datastore-*:1.1.5 เผยแพร่แล้ว เวอร์ชัน 1.1.5 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • เพื่อลดปัญหา CorruptionException ใน PreferencesDataStore ระบบจึงเปลี่ยนพื้นที่เก็บข้อมูลเริ่มต้นจาก OkioStorage เป็น FileStorage การเปลี่ยนแปลงนี้ดำเนินการโดยการเปิดตัว PreferencesFileSerializer b/346197747

เวอร์ชัน 1.1.4

26 มีนาคม 2025

androidx.datastore:datastore-*:1.1.4 เผยแพร่แล้ว เวอร์ชัน 1.1.4 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • เปลี่ยนพื้นที่เก็บข้อมูลเริ่มต้นจาก OkioStorage เป็น FileStorage เพื่อเพิ่มความเสถียรโดยลด CorruptionException (I71181, b/346197747)

เวอร์ชัน 1.1.3

26 กุมภาพันธ์ 2025

androidx.datastore:datastore-*:1.1.3 เผยแพร่แล้ว เวอร์ชัน 1.1.3 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขปัญหา FileNotFoundException ใน OkioStorage ที่พบเมื่อเริ่มต้นแอป หากการพยายามอ่านไฟล์ครั้งแรกไม่สำเร็จ ระบบจะพยายามอ่านไฟล์ครั้งที่ 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)
  • แก้ไขภาวะแข่งขันที่ MultiProcess DataStore อาจพลาดการทำให้เป็นโมฆะระหว่างการเริ่มต้น ((b/326141553),(094c2dd))

เวอร์ชัน 1.1.0-beta02

6 มีนาคม 2024

androidx.datastore:datastore-*:1.1.0-beta02 เผยแพร่แล้ว เวอร์ชัน 1.1.0-beta02 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • การปรับปรุงประสิทธิภาพใน DataStore จะรวบรวมเฉพาะการแจ้งเตือนการอัปเดตเมื่อตรวจพบเท่านั้น (b/267792241)
    • โปรดทราบว่าการเปลี่ยนแปลงนี้อาจทริกเกอร์ UncompletedCoroutinesError ในการทดสอบหากคุณใช้ไลบรารีการทดสอบ 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

เวอร์ชัน 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 ได้