DataStore
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 25 בפברואר 2026 | 1.2.0 | - | - | 1.3.0-alpha06 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-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. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גרסה 1.3
גרסה 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 מכילה את השמירות האלה.
תכונות חדשות
- פרופילים של 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 ל-Web. (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באמצעותsessionStorageAPI. התכונה הזו מאפשרת ל-DataStoreלשמור נתונים באופן זמני בתוך כרטיסייה אחת בדפדפן. (I60fad, b/316376114)
גרסה 1.2
גרסה 1.2.0
19 בנובמבר 2025
androidx.datastore:datastore-*:1.2.0 מופץ. גרסה 1.2.0 מכילה את השמירות האלה.
שינויים משמעותיים מאז גרסה 1.1.0
תמיכה ב-Java/Guava:
- המודול החדש
datastore-guavaנוסף כדי לחשוף ממשקי API שמתאימים למשתמשי Java ו-GuavaListenableFutureדרךGuavaDataStore. - הוספנו תמיכה בריבוי תהליכים ב-
GuavaDataStore. - נוספה פונקציה עם עומס יתר ל-
GuavaDataStore.fromשמקבלת JavaExecutor(במקום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בשיטת נציג כדי לאתחל 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) - הגדרתם את בנאי ברירת המחדל עבור
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שזוהתה בהפעלת האפליקציה. אם ניסיון הקריאה הראשוני של הקובץ לא מצליח, יתבצע ניסיון שני למקרה שהתרחש מצב מירוץ בגלל שהקובץ נוצר על ידי תהליך אחר במהלך הקריאה הראשונית. (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) - תוקנה בעיית תזמון שבה יכול להיות ש-
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) - הפסקנו את ההודעה
IOExceptionsאם המחיקה שלSharedPreferencesנכשלת במהלך ההעברה.DataStore(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. - מוסיפים שיטת יצירה חדשה ב-
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 מאפשר לכם לאחסן צמדי מפתח-ערך או אובייקטים מוקלדים באמצעות מאגרי אחסון לפרוטוקולים. המאגר משתמש בשגרות המשך וב-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. (I60f9a)
- הפונקציות Serializer writeTo ו-readFrom מושהות עכשיו. אם הטמעתם Serializer, תצטרכו לעדכן את הפונקציות שלכם לפונקציות השהיה. (I1e58e)
- נוספו נציגי נכסים למשתמשי RxDataStore. (Ied768, b/173726702)
תיקוני באגים
- החלת הגבלות על שימוש ציבורי בממשקי API ניסיוניים (I6aa29, b/174531520)
גרסה 1.0.0-alpha07
24 בפברואר 2021
androidx.datastore:datastore-*:1.0.0-alpha07 מופץ. גרסה 1.0.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API
הפונקציה של התוסף
Context.createDataStoreהוסרה והוחלפה בנציג המאפיינים globalDataStore. קוראים ל-globalDataStore פעם אחת ברמה העליונה בקובץ Kotlin. לדוגמה:val Context.myDataStore by dataStore(...)ממקמים את הקוד הזה ברמה העליונה של קובץ Kotlin כדי שתהיה רק מופע אחד שלו. (I57215, b/173726702)
הפונקציות של RxDataStore נמצאות עכשיו במחלקה RxDataStore במקום בפונקציות הרחבה ב-DataStore. (Idccdb, b/177691248)
אם רוצים להעביר EncryptedSharedPreferences (או direct boot 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.
datastore-rxjava2/3artifacts מכילים את העטיפות של ממשקי הליבה של 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 מכילה את השמירות האלה.
תכונות חדשות
- העדפות תומכות עכשיו בערכים מסוג 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)
בעיות מוכרות
- התרסקות של 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 עם סוגים שאינם פרוטו/העדפות (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.