DataStore
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 12 באוקטובר 2026 | 1.2.1 | 1.3.0-rc01 | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-DataStore, צריך להוסיף לפרויקט את מאגר Google Maven. מידע נוסף זמין במאמר מאגר ה-Maven של Google.
DataStore מספק אפשרויות שונות לסריאליזציה, אפשר לבחור באחת מהן. אפשר גם להוסיף תלויות ללא Android לכל אחת מההטמעות.
אתם יכולים להוסיף את יחסי התלות של ההטמעה שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
DataStore להעדפות
מוסיפים את השורות הבאות לחלק של יחסי התלות בקובץ gradle:
Groovy
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation "androidx.datastore:datastore-preferences:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-preferences-core:1.2.1" }
Kotlin
dependencies { // Preferences DataStore (SharedPreferences like APIs) implementation("androidx.datastore:datastore-preferences:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-preferences-core:1.2.1") }
כדי להוסיף תמיכה אופציונלית ב-RxJava, מוסיפים את יחסי התלות הבאים:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-preferences-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-preferences-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-preferences-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-preferences-rxjava3:1.2.1") }
DataStore
מוסיפים את השורות הבאות לחלק של יחסי התלות בקובץ gradle:
Groovy
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation "androidx.datastore:datastore:1.2.1" // Alternatively - without an Android dependency. implementation "androidx.datastore:datastore-core:1.2.1" }
Kotlin
dependencies { // Typed DataStore for custom data objects (for example, using Proto or JSON). implementation("androidx.datastore:datastore:1.2.1") // Alternatively - without an Android dependency. implementation("androidx.datastore:datastore-core:1.2.1") }
לתמיכה ב-RxJava, צריך להוסיף את יחסי התלות האופציונליים הבאים:
Groovy
dependencies { // optional - RxJava2 support implementation "androidx.datastore:datastore-rxjava2:1.2.1" // optional - RxJava3 support implementation "androidx.datastore:datastore-rxjava3:1.2.1" }
Kotlin
dependencies { // optional - RxJava2 support implementation("androidx.datastore:datastore-rxjava2:1.2.1") // optional - RxJava3 support implementation("androidx.datastore:datastore-rxjava3:1.2.1") }
כדי לבצע סריאליזציה של תוכן, מוסיפים תלות בסריאליזציה של מאגרי אחסון לפרוטוקולים או של 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-rc01
12 באוקטובר 2026
androidx.datastore:datastore-*:1.3.0-rc01 מופץ. גרסה 1.3.0-rc01 מכילה את השמירות האלה.
שינויים ב-API
- במקום
EdgeToEdge#enable()(Ibff3e), צריך להשתמש ב-WindowCompat#enableEdgeToEdge(Window)
תיקוני באגים
- התלות
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וכוללת תמיכה ארכיטקטונית בקלט/פלט אסינכרוני של קבצים, בהתראות בכרטיסיות שונות באמצעותBroadcastChannelAPI, ובנעילה מבוזרת באמצעותWeb Locks APIהמקורי לגישת כתיבה בלעדית. Id7f5807 b/316376114
שינויים ב-API
- הוספנו את ממשקי ה-API
WebLocalStorageו-WebSessionStorageלניהול מפורש של סוגי אחסון בסביבות אינטרנט. I35fa259b b/316376114
גרסה 1.3.0-alpha07
11 במרץ 2026
androidx.datastore:datastore-*:1.3.0-alpha07 מופץ. גרסה 1.3.0-alpha07 מכילה את ה-commits האלה.
תכונות חדשות
- תמיכה בהצפנה: הוספנו את ארטיפקט
androidx.datastore:datastore-tinkהחדש, שמאפשר להצפין את מאגר הנתונים באמצעות ספריית Tink. במודול הזה מוצגAeadSerializer, שהוא wrapper class חדש שמטמיע אתSerializer<T>ומשתמש בהצפנה מאומתת עם מידע נלווה (AEAD) של Tink כדי להצפין ולפענח נתונים. אפשר להשתמש ב-AeadSerializerבפלטפורמות היעד JVM ו-Android. - API חדש של
DataStoreBuilder: הוספנו את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 מכילה את השמירות האלה.
תכונות חדשות
- פרופילים של Baseline נוספו למאגר הנתונים. (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. - נוסף עומס יתר ל-
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. - הגדרת בנאי ברירת המחדל עבור
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 הראשי) במקום ב-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 מכילה את השמירות האלה.
תיקוני באגים
- נפתרה בעיה שבה המטא-נתונים של 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 מכילה את ה-commits האלה.
תיקוני באגים
- כדי לשפר את המהימנות, מחליפים את סוג האחסון שמוגדר כברירת מחדל מ-
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 מכילה את השמירות האלה.
תיקוני באגים
- שיפור של פי 8 בזמן הטעינה של קריאה חמה (
DataStore.data.first()). (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 תומך בכמה תהליכים שניגשים לאותו קובץ, עם תמיכה בתצפיתיות (observability) בתהליכים שונים.
- ממשק האחסון החדש מאפשר לכם להתאים אישית את האופן שבו אתם מאחסנים או מבצעים סריאליזציה של מודלי הנתונים שלכם.
- עכשיו אפשר להשתמש ב-DataStore בפרויקטים של Kotlin Multiplatform.
גרסה 1.1.0-rc01
3 באפריל 2024
androidx.datastore:datastore-*:1.1.0-rc01 מופץ. גרסה 1.1.0-rc01 מכילה את ה-commits האלה.
תיקוני באגים
- תוקנה הירידה בביצועים שבה קריאות ל-
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 שחסרה בארטיפקט
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. - מוסיפים שיטת factory חדשה ב-
androidx.datastore.core.MultiProcessDataStoreFactoryכדי ליצור מופעים של DataStore עם אובייקטים שלStorageלפעולות על קבצים. - הוספנו ממשק חדש
InterProcessCoordinatorשעוזר לכמה מופעים של DataStore לתקשר בין תהליכים. חשוב לדעת שהטמעה שלInterProcessCoordinatorבכמה תהליכים זמינה רק ב-Android.
שינויים ב-API
- הוספת
InterProcessCoordinatorאלStorageConnectionבממשק datastore-core (I555bb) - שינוי ממשקי API ב-datastore-core
MultiProcessDataStoreFactoryלשימוש ב-Storage. (Iac02f) - העברת ממשקי API ציבוריים ב-datastore-multiprocess אל datastore-core (I76d7c)
- Exposed
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)
- Exposed
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 מושעות עכשיו. אם הטמעתם Serializer, תצטרכו לעדכן את הפונקציות שלכם כך שיהיו פונקציות השעיה. (I1e58e)
- נוספו נציגי נכסים למשתמשי RxDataStore. (Ied768, b/173726702)
תיקוני באגים
- אכיפת הגבלות על שימוש ציבורי בממשקי API ניסיוניים (I6aa29, b/174531520)
גרסה 1.0.0-alpha07
24 בפברואר 2021
androidx.datastore:datastore-*:1.0.0-alpha07 מופץ. גרסה 1.0.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API
הפונקציה של התוסף
Context.createDataStoreהוסרה והוחלפה בנציג המאפיין globalDataStore. קוראים ל-globalDataStore פעם אחת ברמה העליונה בקובץ Kotlin. לדוגמה:val Context.myDataStore by dataStore(...)מציבים את הקוד הזה ברמה העליונה של קובץ Kotlin כדי שתהיה רק דוגמה אחת שלו. (I57215, b/173726702)
הפונקציות של RxDataStore נמצאות עכשיו במחלקה RxDataStore במקום בפונקציות של תוספים ב-DataStore. (Idccdb, b/177691248)
אם אתם רוצים להעביר את EncryptedSharedPreferences (או את SharedPreferences של אתחול ישיר) אל DataStore, עכשיו אתם יכולים לעשות זאת באמצעות בנאי SharedPreferencesMigration חדש שמאפשר לכם להוסיף את SharedPreferences. (I8e04e, b/177278510)
תיקוני באגים
- עכשיו DataStore יזרוק חריגה אם יש כמה מאגרי DataStore פעילים לאותו קובץ. אם לא ניהלתם את DataStore כ-Singleton או לא וידאתם שאין שני מופעים של DataStore שפעילים בו-זמנית עבור קובץ, יכול להיות שיוצגו לכם עכשיו חריגים כשאתם קוראים או כותבים ב-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/3artifacts מכילים את העטיפות של ממשקי ה-API המרכזיים של DataStore (RxDataStore, RxDataStoreBuilderו-RxDataMigration). datastore-preferences-rxjava2/3artifacts מכילים כלי ליצירת 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 (כולל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.