DataStore
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 21 באוקטובר 2026 | 1.3.0 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-DataStore, צריך להוסיף לפרויקט את מאגר Google Maven. מידע נוסף זמין במאמר מאגר ה-Maven של Google.
DataStore מספק אפשרויות שונות לסריאליזציה, בחרו אחת מהן. אפשר גם להוסיף יחסי תלות ללא Android לכל אחד מההטמעות.
אתם יכולים להוסיף את יחסי התלות של ההטמעה שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
DataStore להעדפות
מוסיפים את השורות הבאות לחלק של יחסי התלות בקובץ 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, מוסיפים את יחסי התלות הבאים:
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
מוסיפים את השורות הבאות לחלק של יחסי התלות בקובץ 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") }
לתמיכה ב-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") }
כדי לבצע סריאליזציה של תוכן, מוסיפים תלות בסריאליזציה של מאגרי אחסון לפרוטוקולים או של 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 באוקטובר 2026
androidx.datastore:datastore-*:1.3.0 מופץ. גרסה 1.3.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.2.0:
תכונות חדשות
תמיכה באחסון באינטרנט: הוספנו אפשרויות אחסון באינטרנט ב-KMP, שמאפשרות לשמור נתונים באופן גמיש ביעדים באינטרנט:
-
sessionStorage(WebSessionStorage): מאפשר שמירה זמנית של נתונים בכרטיסייה אחת בדפדפן. -
localStorage(WebLocalStorage): מאפשר אחסון מתמיד עם התראות לגבי אירועים וסנכרון בין כרטיסיות. - Origin Private File System (
WebOpfsStorage): מספקת תמיכה במערכת הקבצים דרך OPFS, עם קלט/פלט אסינכרוני של קבצים והתראות בכרטיסיות שונות.
-
תמיכה בהצפנה (
datastore-tink): נוסף פריט המידע החדשandroidx.datastore:datastore-tink, שמספק תמיכה בהצפנה באמצעות ספריית Tink. הוא מציג אתAeadSerializerכדי להצפין ולפענח נתונים באמצעות הצפנה מאומתת עם מידע נלווה (AEAD).תמיכה במעקב: הוספנו תמיכה ב-
androidx.tracingבפלטפורמת היעד של Android.API של
DataStore.Builder: השקנו אתDataStore.Builder<T>כחלופה מודרנית וניתנת להתאמה ל-DataStoreFactory. כדי לשפר את המקביליות המובנית, צריך להשתמש ב-CoroutineContextבמקום ב-CoroutineScope.פרופילים של Baseline: הוספנו פרופילים של Baseline ל-
datastoreכדי לשפר את ביצועי ההפעלה.
שינויים ב-API
- ממשקי ה-API של
DataStore.Builder,ReThrowCorruptionHandlerו-InterProcessCoordinatorעודכנו לגרסהpublic.
תיקוני באגים ושיפורים
הוספנו מידע על נתיב הקובץ הבסיסי להודעות
CorruptionExceptionכדי לשפר את היכולת לנפות באגים במהלך כשלים בניתוח.תוקן אובדן נתונים פוטנציאלי ב-
GuavaDataStoreעל ידי אכיפת סדר קפדני של "נכנס ראשון יוצא ראשון" (FIFO) לעדכונים.
גרסה 1.3.0-rc01
12 באוקטובר 2026
androidx.datastore:datastore-*:1.3.0-rc01 מופץ. גרסה 1.3.0-rc01 מכילה את השמירות האלה.
שינויים ב-API
- שימוש ב-
WindowCompat#enableEdgeToEdge(Window)במקום ב-EdgeToEdge#enable() (Ibff3e)
תיקוני באגים
- התלות
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 ביולי 2026
androidx.datastore:datastore-*:1.3.0-alpha10 מופץ. גרסה 1.3.0-alpha10 מכילה את ה-commits האלה.
שינויים ב-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) - התאמה של מחזור החיים של המעקב למעקב המערכת. (Ib391b)
גרסה 1.3.0-alpha08
22 באפריל 2026
androidx.datastore:datastore-*:1.3.0-alpha08 מופץ. גרסה 1.3.0-alpha08 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו תמיכה במערכת קבצים פרטית של מקור (OPFS) ב-DataStore לפלטפורמות אינטרנט. ההטמעה הזו מציגה את
WebOpfsStorageוכוללת תמיכה ארכיטקטונית בקלט/פלט של קבצים אסינכרוניים, התראות בכרטיסיות שונות באמצעות ה-API שלBroadcastChannelונעילה מבוזרת באמצעות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, שמאפשר להצפין את מאגר הנתונים באמצעות ספריית Tink. במודול הזה מוצגAeadSerializer, שהוא wrapper class חדש שמטמיע אתSerializer<T>ומשתמש בהצפנה מאומתת עם מידע נלווה (AEAD) של Tink כדי להצפין ולפענח נתונים. אפשר להשתמש ב-AeadSerializerבפלטפורמות היעד JVM ו-Android. -
DataStoreBuilder API חדש: הוספנו אתDataStore.Builder<T>כחלופה שניתנת להתאמה ל-DataStoreFactory. עם ה-API החדש הזה, המשתמשים יכולים עכשיו לספק לוגיקת פגיעה משלהם באמצעותsetCorruptionHandler. בנוסף, ב-API שלBuilderצריך להפעיל אתDataStoreבאמצעותCoroutineContextבמקוםCoroutineScope. זהו שיפור של בו-זמניות מובנית, כי הוא מאפשר למבצעי הקריאה להגדיר את אופן ההפעלה (כמו Dispatchers ספציפיים) בלי לאלץ אתDataStoreלנהל באופן לא הולם את מחזור החיים של ההיקף של מבצע הקריאה או להיות כפוף לו.הערה: אנחנו ממליצים לכל המשתמשים לעבור מ-
DataStoreFactoryלממשקי ה-API החדשים שלDataStore.Builder. הדרישה ל-CoroutineContextבמקום ל-CoroutineScopeמאפשרת ל-API לאכוף בו-זמניות מובנית טובה יותר. כך אפשר לוודא שפעולות DataStore לא קשורות למחזורי חיים קצרים של ממשק המשתמש (למשל,viewModelScope), ולמנוע ביטול מוקדם ואובדן נתונים פוטנציאלי.אזהרה: ודאו של-
CoroutineContextשסופק ל-Builder ישJob, ושהוא ברמת האפליקציה. אם ההקשר מבוטל, הפעולות הפנימיות שלDataStoreיופסקו לפני הזמן.
שינויים ב-API
הוספנו את פריט המידע החדש
androidx.datastore:datastore-tinkלתמיכה בהצפנה שלDataStore. (Ic106d, b/167697691)כדי להצפין נתונים באמצעות Tink:
יוצרים מפתח באמצעות ממשקי ה-API של Tink:
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 כשיוצרים את המופע של מאגר הנתונים: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(). thought (I71bc2, b/427722902)
גרסה 1.3.0-alpha05
28 בינואר 2026
androidx.datastore:datastore-*:1.3.0-alpha05 מופץ. גרסה 1.3.0-alpha05 מכילה את ה-commits האלה.
תכונות חדשות
- פרופילים בסיסיים נוספו למאגר הנתונים. (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)
- תוקנה בעיה כדי למנוע עדכונים שנמחקו במהלך קריאה/כתיבה בו-זמנית. יכול להיות שיתרחש מרוץ תהליכים בין אוסף חדש ב-
DataStore.dataלבין קריאה בו-זמנית ל-updateData, וכתוצאה מכך האוסף יפספס את הערך החדש. (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באמצעות ה-API שלsessionStorage. התכונה הזו מאפשרת ל-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 מכילה את ה-commits האלה.
השינויים העיקריים מאז גרסה 1.1.0
תמיכה ב-Java/Guava:
- הוספנו את המודול החדש
datastore-guavaכדי לחשוף ממשקי API שמתאימים למשתמשי Java ו-GuavaListenableFutureדרךGuavaDataStore. - הוספנו תמיכה בריבוי תהליכים ב-
GuavaDataStore. - נוספה פונקציה עם שם זהה (overload) ל-
GuavaDataStore.fromשמקבלתExecutorשל Java (במקוםCoroutineContext) ומשתמשת ב-androidx.core.util.Function.
תמיכה בהפעלה ישירה:
- עכשיו יש תמיכה בשימוש ב-DataStore במצב Direct Boot. ממשקי API חדשים כמו
createInDeviceProtectedStorage()ב-DataStoreFactoryו-deviceProtectedDataStore()ב-DataStoreDelegateמאפשרים ליצור את DataStore בתוך האחסון המוגן של המכשיר.
שינויים באחסון וב-API:
- הוספנו את
PreferencesFileSerializerשמטמיע אתandroidx.datastore.core.Serializerלשימוש עםFileStorage. - הגדרת ה-constructor שמוגדר כברירת מחדל ל-
ReplaceFileCorruptionHandlerלשימוש בקוד נפוץ.
תיקוני באגים:
- תוקנה הבעיה
java.lang.UnsatisfiedLinkErrorכשמשתמשים ב-DataStoreבאפליקציה שעברה אופטימיזציה באמצעות R8 אבל לא משתמשת בקובץ ProGuard הרגיל. - תוקנה בעיה שבה פעולות
GuavaDataStoreיכלו לפעול באופן שגוי ב-thread הקורא (למשל, ה-thread הראשי) במקום ב-IO 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 הראשי) במקום ב-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. כדי ליצור מאגר נתונים שישמש במצב Direct Boot, צריך ליצור אותו בתוך האחסון Device Protected. כדי לעשות את זה, אפשר להשתמש בממשקי ה-API החדשים הבאים שלDataStore: createInDeviceProtectedStorage()ב-DataStoreFactoryו-deviceProtectedDataStore()ב-DataStoreDelegate. (Ib90e56)
שינויים ב-API
- נוסף
PreferencesFileSerializerשמטמיע ממשקandroidx.datastore.core.Serializerלשימוש עםFileStorage. (I4c71f3)
תיקוני באגים
- נפתרה בעיה
FileNotFoundExceptionב-OkioStorageבזמן ההפעלה על ידי הוספת ניסיון שני לקריאת נתונים במקרה של מרוץ תהליכים. (I43b3fb, b/337870543) - הגדרת את ה-constructor שמוגדר כברירת מחדל ל-
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 מכילה את ה-commits האלה.
תיקוני באגים
- נפתרה בעיה שבה המטא-נתונים של Gradle היו פגומים בגרסה
1.1.5. הבעיה הזו נגרמה בגלל באג ב-DSL החדש של הפלאגין AGP KMP, שמנע הכללה אוטומטית של מטא-נתונים לכל פלטפורמות היעד. הבאג גורם לכך שחלק מהשיטות של DataStore ל-Android לא מוצגות יותר בגרסאות ה-build של הלקוחות. כדי לתקן את הבעיה, צריך להשתמש ב-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שהתרחשה בזמן הפעלת האפליקציה. אם הניסיון הראשון לקרוא את הקובץ נכשל, המערכת תנסה שוב למקרה שהתרחש מרוץ תהליכים כי הקובץ נוצר בתהליך אחר במהלך הקריאה הראשונה. (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 מכילה את ה-commits האלה.
שינויים משמעותיים מאז גרסה 1.0.0
למידע נוסף, כדאי לעיין בנתוני הגרסה של גרסאות אלפא וגרסת בטא של 1.1.0. חלק מהעדכונים העיקריים בגרסה 1.1.0 הם:
- עכשיו DataStore תומך בכמה תהליכים שניגשים לאותו קובץ, עם תמיכה בתצפיתיות (observability) בתהליכים שונים.
- ממשק האחסון החדש מאפשר לכם להתאים אישית את האופן שבו אתם מאחסנים או מבצעים סריאליזציה של מודלי הנתונים שלכם.
- עכשיו אפשר להשתמש ב-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בבדיקות אם משתמשים בספריית הבדיקות של 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
- ה-method של ה-factory
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 החסרה של פריט המידע שנוצר בתהליך הפיתוח (Artifact) של
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 (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. ל-DataStorefactories יש שיטות חדשות שמקבלות את אובייקט האחסון הזה.
שינויים ב-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 מאפשר לכם לאחסן צמדי מפתח/ערך או אובייקטים מוקלדים באמצעות מאגרי אחסון לפרוטוקולים. המאגר משתמש בשגרות המשך וב-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)
תיקוני באגים
- תוקן באג שבו נציגי 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, תצטרכו לעדכן את הפונקציות שלכם כך שיהיו פונקציות השהיה. (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, אתם יכולים לעשות את זה עכשיו באמצעות ה-constructor החדש של SharedPreferencesMigration שמאפשר להוסיף את SharedPreferences. (I8e04e, b/177278510)
תיקוני באגים
- מעכשיו, DataStore יזרוק חריגה אם יש כמה 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 מכילה את השינויים האלה.
תכונות חדשות
- נוספו wrapper של RxJava ל-DataStore. רכיבי ה-Artifacts של
datastore-rxjava2/3מכילים את ה-wrappers של ממשקי ה-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- הקריסה דווחה במקור כאן: b/173036843
- (I4712d, b/173036843)
גרסה 1.0.0-alpha03
11 בנובמבר 2020
androidx.datastore:datastore-*:1.0.0-alpha03 מופץ. גרסה 1.0.0-alpha03 מכילה את השינויים האלה.
תכונות חדשות
- העדפות תומכות עכשיו בערכים כפולים (שימושי אם אתם צריכים דיוק רב יותר מאשר ערכים מסוג float) (I5be8f, b/169471808)
שינויים ב-API
- יצרנו תלות ב-Kotlin טהור למאגר נתונים כדי לאפשר הידור מהיר יותר.
androidx.datastore:datastore-coreמכיל את ממשקי ה-API העיקריים של Kotlin בלבד, ו-androidx.datastore:datastoreמכיל את ממשקי ה-API שתלויים ב-Android (כולל ה-constructor שלSharedPreferencesMigrationו-Context.createDataStore).(I42d75, b/168512698) - פיצול יעדים למאגר נתונים של העדפות כדי לקצר את זמן ההידור של Kotlin (Ia3c19)
עכשיו הסריאליזציות דורשות מאפיין חדש לערך ברירת המחדל, שישמש אם אין נתונים בדיסק. כך קל יותר להטמיע סריאליזציה בהתאמה אישית, והמשתמשים לא צריכים להגדיר מקרה מיוחד לזרמי קלט ריקים (זרמי קלט ריקים לא מנותחים באמצעות JSON).
- בנוסף, יש עכשיו בדיקה כדי לוודא שזרם הפלט שסופק ל-writeTo() לא סגור, ואם הוא סגור, הוא זורק חריגים (I16e29)
הפיכת ה-constructor של 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. המוטציה משבשת את השימוש במאגר הנתונים לאנשים שמשתמשים במאגר הנתונים עם סוגים שאינם 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. המאגר מבוסס על שגרות המשך ו-Flow של Kotlin, ומספק שני סוגים שונים של הטמעה:
- Proto DataStore, שמאפשר לאחסן אובייקטים מוקלדים (מגובים על ידי מאגרי אחסון לפרוטוקולים)
- Preferences DataStore, שמאחסן צמדי מפתח-ערך
הנתונים נשמרים באופן אסינכרוני, עקבי וטרנזקציונלי, מה שפותר את רוב החסרונות של SharedPreferences.