DataStore

אחסון נתונים באופן אסינכרוני, עקבי וטרנזקציונלי, כדי להתגבר על חלק מהחסרונות של SharedPreferences
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫17 בדצמבר 2025 1.2.0 - - ‎1.3.0-alpha03

הצהרה על יחסי תלות

כדי להוסיף תלות ב-DataStore, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.

‫DataStore מספק אפשרויות שונות לסריאליזציה, צריך לבחור אחת מהן. אפשר גם להוסיף תלות ללא Android לכל אחת מההטמעות.

מוסיפים את יחסי התלות של ההטמעה שרוצים בקובץ build.gradle של האפליקציה או המודול:

‫Preferences DataStore

מוסיפים את השורות הבאות לחלק של יחסי התלות בקובץ 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, מוסיפים את יחסי התלות הבאים:

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

מוסיפים את השורות הבאות לחלק של יחסי התלות בקובץ 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")
    }
    

מוסיפים את יחסי התלות האופציונליים הבאים לתמיכה ב-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-alpha03

‫17 בדצמבר 2025

androidx.datastore:datastore-*:1.3.0-alpha03 משוחרר. גרסה ‎1.3.0-alpha03 מכילה את הקומטים האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לכשל בשינוי השם של קובץ זמני של מאגר נתונים. (I94f89, b/203087070)
  • תוקנה בעיה שגרמה להפסקת עדכונים במהלך קריאה/כתיבה בו-זמנית. יכול להיות שיתרחש מצב מירוץ בין אוסף חדש ב-DataStore.data לבין קריאה בו-זמנית ל-updateData, ולכן האוסף לא יכלול את הערך החדש. ‫(I6a427, b/431787506)

גרסה ‎1.3.0-alpha02

‫3 בדצמבר 2025

androidx.datastore:datastore-*:1.3.0-alpha02 משוחרר. גרסה ‎1.3.0-alpha02 מכילה את הקומטים האלה.

תיקוני באגים

גרסה ‎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.0

‫19 בנובמבר 2025

androidx.datastore:datastore-*:1.2.0 משוחרר. גרסה 1.2.0 מכילה את ההתחייבויות האלה.

שינויים משמעותיים מאז גרסה 1.1.0

תמיכה ב-Java/Guava:

  • המודול החדש datastore-guava נוסף כדי לחשוף ממשקי API שמתאימים למשתמשי Java ו-Guava ListenableFuture דרך GuavaDataStore.
  • הוספנו תמיכה בריבוי תהליכים ב-GuavaDataStore.
  • נוספה פונקציה עם עומס יתר ל-GuavaDataStore.from שמקבלת Java Executor (במקום CoroutineContext) ומשתמשת ב-androidx.core.util.Function.

תמיכה בהפעלה ישירה:

  • יש עכשיו תמיכה בשימוש ב-DataStore במהלך מצב Direct Boot. ממשקי API חדשים כמו createInDeviceProtectedStorage() ב-DataStoreFactory ו-deviceProtectedDataStore() ב-DataStoreDelegate מאפשרים ליצור את מאגר הנתונים בתוך האחסון המוגן של המכשיר.

שינויים ב-API ובאחסון:

  • נוסף PreferencesFileSerializer שמטמיע את androidx.datastore.core.Serializer לשימוש עם FileStorage.
  • הגדרת בנאי ברירת המחדל של ReplaceFileCorruptionHandler לשימוש נפוץ בקוד.

תיקוני באגים:

  • תוקנה הבעיה java.lang.UnsatisfiedLinkError כשמשתמשים ב-DataStore באפליקציה שעברה אופטימיזציה באמצעות R8 אבל לא נעשה בה שימוש בקובץ ProGuard רגיל.
  • נפתרה בעיה שגרמה להפעלת פעולות GuavaDataStore באופן שגוי ב-thread של הקריאה (למשל, ה-thread הראשי) במקום ב-dispatcher של הקלט/פלט שצוין.
  • נפתרה בעיה ב-FileNotFoundException ב-OkioStorage בהפעלה על ידי הוספת ניסיון שני לקריאת נתונים במקרה של מרוץ תהליכים.

גרסה 1.2.0-rc01

‫5 בנובמבר 2025

androidx.datastore:datastore-*:1.2.0-rc01 משוחרר. גרסה 1.2.0-rc01 מכילה את הקומטים האלה.

גרסה 1.2.0-beta01

‫22 באוקטובר 2025

androidx.datastore:datastore-*:1.2.0-beta01 משוחרר. גרסה 1.2.0-beta01 מכילה את הקומטים האלה.

שינויים ב-API

  • הופכים את CorruptionHandler לגלוי לכולם. ‫(I9ac35, ‏ b/452406457)
  • שימוש ב-androidx.core.util.Function ב-GuavaDataStore. (I71eae, ‏ b/448563999)
  • מוסיפים עומס יתר ל-GuavaDataStore.from שמקבל Executor במקום CoroutineContext. (I989fa, ‏ b/448563183)

תיקוני באגים

  • תיקון java.lang.UnsatisfiedLinkError כשמשתמשים ב-DataStore באפליקציה שעברה אופטימיזציה באמצעות R8, אבל לא משתמשים ב-getDefaultProguardFile('android-proguard-optimize.txt'). (I27d0d, b/434696293)
  • נפתרה בעיה שבה פעולות של GuavaDataStore יכלו לפעול באופן שגוי ב-thread שקורא (למשל, ה-thread הראשי) במקום ב-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 העמוס מדי בשיטת delegate כדי לאתחל 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. כדי ליצור מאגר נתונים לשימוש במצב Direct Boot, צריך ליצור אותו באחסון Device Protected. אפשר לעשות זאת באמצעות ממשקי ה-API החדשים של DataStore: ‏ createInDeviceProtectedStorage() ב-DataStoreFactory ו-deviceProtectedDataStore() ב-DataStoreDelegate. (Ib90e56)

שינויים ב-API

  • נוסף PreferencesFileSerializer שמטמיע את הממשק androidx.datastore.core.Serializer לשימוש עם FileStorage. (I4c71f3)

תיקוני באגים

  • נפתרה בעיה מספר FileNotFoundException ב-OkioStorage בהפעלה על ידי הוספת ניסיון שני לקריאת נתונים במקרה של מצב מירוץ. (I43b3fb, ‏ b/337870543)
  • הגדרת בנאי ברירת המחדל עבור ReplaceFileCorruptionHandler לשימוש נפוץ בקוד. (I795b05, ‏ b/358138957)

גרסה 1.1

גרסה 1.1.7

‫20 במאי 2025

androidx.datastore:datastore-*:1.1.7 משוחרר. גרסה 1.1.7 מכילה את ההתחייבויות האלה.

תיקוני באגים

  • תוקנה בעיה של כללי Proguard חסרים בארטיפקט Android של datastore-preferences-core. (3f3f6e, b/413078297)

גרסה 1.1.6

‫7 במאי 2025

androidx.datastore:datastore-*:1.1.6 משוחרר. גרסה 1.1.6 מכילה את הקומטים האלה.

תיקוני באגים

  • נפתרה בעיה שגרמה לשבירה של מטא-נתונים של Gradle בגרסה 1.1.5. הבעיה הזו נגרמה באג ב-DSL של הפלאגין החדש AGP KMP, שמונע הכללה אוטומטית של מטא-נתונים לכל פלטפורמות היעד. הבאג גורם לכך שחלק מהשיטות של DataStore Android לא מוצגות יותר בגרסאות של לקוחות. התיקון כולל שימוש ב-DSL בגרסה android הישנה ב-build.gradle במקום ב-androidLibrary. (7801abf)

גרסה 1.1.5

‫23 באפריל 2025

androidx.datastore:datastore-*:1.1.5 משוחרר. גרסה 1.1.5 מכילה את ההתחייבויות האלה.

תיקוני באגים

  • כדי לצמצם את הבעיות שקשורות ל-CorruptionException ב-PreferencesDataStore, שינינו את האחסון שמוגדר כברירת מחדל מ-OkioStorage ל-FileStorage. השינוי הזה בוצע באמצעות הוספה של PreferencesFileSerializer. b/346197747

גרסה 1.1.4

‫26 במרץ 2025

androidx.datastore:datastore-*:1.1.4 משוחרר. גרסה 1.1.4 מכילה את הקומטים האלה.

תיקוני באגים

  • כדי לשפר את המהימנות, מחליפים את האחסון שמוגדר כברירת מחדל מ-OkioStorage ל-FileStorage כדי לצמצם את CorruptionException. (I71181, ‏ b/346197747)

גרסה 1.1.3

‫26 בפברואר 2025

androidx.datastore:datastore-*:1.1.3 משוחרר. גרסה 1.1.3 מכילה את הקומטים האלה.

תיקוני באגים

  • נפתרה בעיה ב-FileNotFoundException ב-OkioStorage שקרתה בהפעלת האפליקציה. אם הניסיון הראשוני לקרוא את הקובץ לא מצליח, יתבצע ניסיון שני למקרה שהתרחש מצב של תחרות (race condition) בגלל שהקובץ נוצר על ידי תהליך אחר במהלך הקריאה הראשונית. ‫(I43b3f, ‏ b/337870543)

גרסה 1.1.2

‫15 בינואר 2025

androidx.datastore:datastore-*:1.1.2 משוחרר. גרסה 1.1.2 מכילה את ההתחייבויות האלה.

תיקוני באגים

  • שיפור של פי 8 בזמן האחזור של קריאה חמה (DataStore.data.first()). (22b8a40)
  • אפשר ליצור את ReplaceFileCorruptionHandler מקוד משותף של KMP. (7632e839)

גרסה 1.1.1

‫1 במאי 2024

androidx.datastore:datastore-*:1.1.1 משוחרר. גרסה 1.1.1 מכילה את הקומטים האלה.

תיקוני באגים

  • בוצעה הקלה על אזעקת שווא ב-Linux לגבי השגיאה 'יכול להתרחש מצב של חסימת משאבים' במקרה קצה שבו כמה מופעים של 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)
  • תוקנה בעיית תזמון שבה יכול להיות ש-MultiProcess DataStore לא יקבל ביטולים במהלך האתחול. ‪((b/326141553),(094c2dd))

גרסה 1.1.0-beta02

‫6 במרץ 2024

androidx.datastore:datastore-*:1.1.0-beta02 משוחרר. גרסה 1.1.0-beta02 מכילה את התחייבויות האלה.

תיקוני באגים

  • התכונה 'שיפור הביצועים' ב-DataStore אוספת רק התראות על עדכונים כשהיא מזהה אותן. (b/267792241)
    • שימו לב שהשינוי הזה עשוי להפעיל UncompletedCoroutinesError בבדיקות שלכם אם אתם משתמשים בספריית הבדיקות של Coroutines. כדי להימנע מהבעיה הזו, חשוב לוודא שמעבירים את TestScope.backgroundScope כשמפעילים את DataStore בבדיקות.
  • ​תוקנה הבעיה שגרמה לקיפאון של קריאות מקוננות של updateData באותו מופע. (b/241760537)
  • הפסקנו את ההצגה של DataStore אם המחיקה של SharedPreferences נכשלת במהלך ההעברה.IOExceptions (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

  • ה-factory method‏ 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)
  • השתנה ה-constructor של OkioStorage כך שיקבל InterProcessCoordinator כדי שאפשר יהיה להשתמש בו ב-Android עם MultiProcessCoordinator. (Iecea3)

תיקוני באגים

  • פתרון בעיה MultiProcessCoordinator שבה אי אפשר לעקוב אחרי כמה קבצים באותה תיקייה.
  • תיקון של הבעיה שבה לא ניתן לזהות קבצים כפולים אם נתיבי הקבצים לא מנורמלים.
  • תיקון ערכים שגויים שמוחזרים מ-RxDataStore#isDisposed.
  • צריך לתקן את הגדרת ProGuard שחסרה עבור ארטיפקט datstore-preferences-core.

גרסה ‎1.1.0-alpha04

‫5 באפריל 2023

androidx.datastore:datastore-*:1.1.0-alpha04 משוחרר. גרסה ‎1.1.0-alpha04 מכילה את הקומיטים האלה.

תיקוני באגים

  • לשפר את ההטמעה הפנימית כדי למנוע מצב של תנאי מירוץ שבו יכול להיות שזרימת הנתונים של DataStore תפלוט ערך ישן יותר אחרי עדכון.

גרסה ‎1.1.0-alpha03

‫24 במרץ 2023

androidx.datastore:datastore-*:1.1.0-alpha03 משוחרר.

תיקוני באגים

  • הוסרו אילוצי תלות מפריטי Maven כדי לעקוף בעיה ב-build ב-Kotlin Native Targets ‏ (b/274786186, ‏ KT-57531).

גרסה ‎1.1.0-alpha02

‫22 במרץ 2023

androidx.datastore:datastore-*:1.1.0-alpha02 משוחרר. גרסה ‎1.1.0-alpha02 מכילה את הקומיטים האלה.

הערה

שימו לב שהגרסה הזו כוללת שינוי חשוב בקוד הפנימי, שמאחד את ההטמעות של DataStore בתהליך יחיד ובתהליכים מרובים. חשוב לשים לב לשינויים לא מכוונים בהתנהגות (למשל, התזמון של התראות על עדכונים). אפשר להשתמש ברכיב של כלי המעקב אחרי בעיות כדי לדווח על שינויים כאלה.

תכונות חדשות

  • מעכשיו אפשר להשתמש ב-DataStore בפרויקטים של KMM. שימו לב: יעדים שאינם 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 לשימוש באחסון. (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 יש שיטות חדשות שמקבלות את אובייקט האחסון הזה.

שינויים ב-API

  • שינוי ממשקי API ב-datastore-core MultiProcessDataStoreFactory לשימוש באחסון. (Iac02f)
  • העברה של ממשקי API ציבוריים מ-datastore-multiprocess אל datastore-core ‏ (I76d7c)
  • הפונקציה PreferencesSerializer נחשפה מ-datastore-preferences-core ‏ (I4b788)

גרסה 1.0.0

גרסה 1.0.0

4 באוגוסט 2021

androidx.datastore:datastore-*:1.0.0 משוחרר. גרסה 1.0.0 מכילה את הקומיטים האלה.

התכונות העיקריות בגרסה 1.0.0

‫Jetpack DataStore הוא פתרון לאחסון נתונים שמאפשר לכם לאחסן צמדי מפתח-ערך או אובייקטים מוקלדים עם מאגרי פרוטוקולים. ‫DataStore משתמש ב-Kotlin coroutines וב-Flow כדי לאחסן נתונים באופן אסינכרוני, עקבי וטרנזקציונלי.

גרסה ‎1.0.0-rc02

21 ביולי 2021

androidx.datastore:datastore-*:1.0.0-rc02 משוחרר. גרסה 1.0.0-rc02 מכילה את הקומיטים האלה.

תיקוני באגים

  • להבהיר שהפונקציה SharedPreferencesMigration לא פועלת אם אין מפתחות. (Icfa32, ‏ b/192824325)
  • תוקן באג שבו הפונקציה SharedPreferencesMigration שנבנתה באמצעות MIGRATE_ALL_KEYS הייתה מעלה חריגה אם המפתח המבוקש עדיין לא קיים. (Ie318a, b/192824325)

גרסה ‎1.0.0-rc01

‫30 ביוני 2021

androidx.datastore:datastore-*:1.0.0-rc01 משוחרר. גרסה 1.0.0-rc01 כוללת את הקומיטים האלה.

תיקוני באגים

  • תוקן באג שבו קובץ ‎ .java נוסף בטעות לקובץ ה-jar הסופי (I65d96, ‏ b/188985637)

גרסה ‎1.0.0-beta02

‫16 ביוני 2021

androidx.datastore:datastore-*:1.0.0-beta02 משוחרר. גרסה ‎1.0.0-beta02 מכילה את הקומיטים האלה.

תיקוני באגים

גרסה ‎1.0.0-beta01

21 באפריל 2021

androidx.datastore:datastore-*:1.0.0-beta01 משוחרר. גרסה ‎1.0.0-beta01 מכילה את הקומיטים האלה.

שינויים ב-API

  • הסרת עומסי JVM לשיטות 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 delegate או ב-context.createDataStore (I60f9a)
  • הפונקציות writeTo ו-readFrom של Serializer מושהות עכשיו. אם הטמעתם 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 כ-Singleton או לא וידאתם שאין שני מקרים של DataStore שפעילים בו-זמנית עבור קובץ, יכול להיות שיוצגו לכם עכשיו חריגים כשקוראים או כותבים ב-DataStore. אפשר לפתור את הבעיות האלה על ידי ניהול של DataStore כ-Singleton. (Ib43f4, ‏ b/177691248)
  • תיקון התנהגות הביטול כשמבטלים את ההיקף של המתקשר. (I2c7b3)

גרסה ‎1.0.0-alpha06

‫13 בינואר 2021

androidx.datastore:datastore-*:1.0.0-alpha06 משוחרר. גרסה ‎1.0.0-alpha06 מכילה את הקומיטים האלה.

תכונות חדשות

  • נוספו עטיפות RxJava ל-DataStore. ‫Artifacts‏ datastore-rxjava2/3 מכילים את העטיפות של ממשקי ה-API המרכזיים של DataStore‏ (RxDataStore,‏ RxDataStoreBuilder ו-RxDataMigration). ‫Artifacts‏ datastore-preferences-rxjava2/3 מכילים כלי ליצירת Preferences DataStore.

שינויים ב-API

  • הסתרת הממשק CorruptionHandler. לא הייתה סיבה שהיא תהיה גלויה לכולם כי מפעל DataStore מקבל רק ReplaceFileCorruptionHandler. (I0b3b3, ‏ b/176032264)
  • הוסרה השיטה preferencesKey<T>(name: String): Key<T> והוחלפה בשיטות ספציפיות לכל סוג נתמך, לדוגמה, preferencesKey<Int>("int") הוא עכשיו intPreferencesKey("int") (Ibcfac,‏ b/170311106)

תיקוני באגים

  • תוקן תיעוד בנושא DataStoreFactory, שבו לא צוין שקובץ מאגר הנתונים נוצר בספריית המשנה datastore/. (Ica222)

גרסה ‎1.0.0-alpha05

2 בדצמבר 2020

androidx.datastore:datastore-*:1.0.0-alpha05 משוחרר. גרסה 1.0.0-alpha05 מכילה את הקומיטים האלה.

תיקוני באגים

  • הוספת תיעוד טוב יותר וחריגים לגבי כתיבות בו-זמניות ממאגרי נתונים. ‫(Ia98a2, ‏ b/173522155, ‏ b/173726702)
  • מעכשיו אפשר (אבל לא חובה) לסגור את OutputStream שמועבר אל Serializer.writeTo(). (I5c9bf, ‏ b/173037611)

גרסה ‎1.0.0-alpha04

‫17 בנובמבר 2020

androidx.datastore:datastore-*:1.0.0-alpha04 משוחרר. גרסה ‎1.0.0-alpha04 מכילה את הקומיטים האלה.

תיקוני באגים

  • תוקנה בעיה באריזה שגרמה לקריסה הבאה ב-Preference Datastore 1.0.0-alpha03: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/datastore/preferences

גרסה ‎1.0.0-alpha03

‫11 בנובמבר 2020

androidx.datastore:datastore-*:1.0.0-alpha03 משוחרר. גרסה ‎1.0.0-alpha03 מכילה את הקומיטים האלה.

תכונות חדשות

  • המאפיין 'העדפות' תומך עכשיו בערכים מסוג 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)
  • עכשיו, לסדרות יש מאפיין חדש לערך ברירת המחדל שישמש אם אין נתונים בדיסק. כך קל יותר להטמיע סדרות מותאמות אישית, כדי שהמשתמשים לא יצטרכו לטפל במקרים מיוחדים של זרמי קלט ריקים (אי אפשר לנתח זרמי קלט ריקים באמצעות JSON).

    • בנוסף, נוספה בדיקה כדי לוודא שזרם הפלט שסופק ל-writeTo() לא סגור, ואם הוא סגור, מוצגים חריגים (I16e29)
  • הגדרת ה-constructor של SharedPreferencesView כפנימי. הוא היה ציבורי במקור כדי לאפשר בדיקות. במקום זאת, הבדיקות צריכות ליצור SharedPreferencesMigration ולבדוק את הפעולה שלו. (I93891)

תיקוני באגים

  • הפרמטר produceFile ב-DataStoreFactory וב-PreferenceDataStoreFactory הוא עכשיו הפרמטר האחרון ברשימה, כך שאפשר להשתמש בתחביר של kotlin trailing lambda. (Ibe7f1, ‏ b/169425442)
  • בהתאם לדרישות החדשות והמפורשות של ה-API ל-Kotlin‏ (I5ae1e)

בעיות מוכרות

  • התרסקות של מאגר ההעדפות עם 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. שינוי שובר את השימוש במאגר הנתונים לאנשים שמשתמשים במאגר הנתונים עם סוגים שאינם פרוטו/העדפות (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 מבוסס על Kotlin coroutines ו-Flow, ומספק שתי הטמעות שונות:

  • ‫Proto DataStore, שמאפשר לאחסן אובייקטים מוקלדים (בגיבוי של מאגרי פרוטוקולים)
  • מאגר נתונים של העדפות, שבו נשמרים צמדים של מפתח/ערך

הנתונים מאוחסנים באופן אסינכרוני, עקבי וטרנזקציונלי, ולכן אין להם את רוב החסרונות של SharedPreferences.