חדר
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 9 בספטמבר 2026 | 2.8.5 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Room, צריך להוסיף את מאגר Maven של Google לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
התלויות של Room כוללות בדיקות של העברות נתונים ב-Room ו-Room RxJava
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Kotlin
dependencies { val room_version = "2.8.4" implementation("androidx.room:room-runtime:$room_version") // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See Add the KSP plugin to your project ksp("androidx.room:room-compiler:$room_version") // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // optional - RxJava2 support for Room implementation("androidx.room:room-rxjava2:$room_version") // optional - RxJava3 support for Room implementation("androidx.room:room-rxjava3:$room_version") // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") }
מגניב
dependencies { def room_version = "2.8.4" implementation "androidx.room:room-runtime:$room_version" // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP) // See KSP Quickstart to add KSP to your build ksp "androidx.room:room-compiler:$room_version" // If this project only uses Java source, use the Java annotationProcessor // No additional plugins are necessary annotationProcessor "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:$room_version" }
מידע על השימוש בתוסף KAPT זמין במסמכי התיעוד של KAPT.
מידע על השימוש בפלאגין KSP זמין במדריך למתחילים של KSP.
מידע על שימוש בתוספים של Kotlin זמין במסמכי התיעוד של ktx.
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ב-build.
לחלופין, בספריות שאינן של Android (כלומר, מודולים של Gradle ב-Java או ב-Kotlin בלבד), אפשר להסתמך על androidx.room:room-common כדי להשתמש בהערות של Room.
הגדרת אפשרויות של קומפיילר
ל-Room יש את האפשרויות הבאות של מעבד אנוטציות (Annotation processor).
room.schemaLocation |
directory
מאפשר לייצא סכימות של מסדי נתונים לקובצי JSON בספרייה שצוינה. מידע נוסף זמין במאמר בנושא העברת חדרים. |
room.incremental |
boolean
הפעלת מעבד אנוטציות (Annotation processor) מצטבר של Gradle. ערך ברירת המחדל הוא true.
|
room.generateKotlin |
boolean
Generate Kotlin source files instead of Java. נדרש KSP. ערך ברירת המחדל הוא true החל מגרסה 2.7.0.
פרטים נוספים מופיעים בהערות לגבי גרסה 2.6.0, שבה הוצגה התכונה.
|
שימוש בפלאגין Room Gradle
בגרסה 2.6.0 ואילך של Room, אפשר להשתמש ב-Room Gradle Plugin כדי להגדיר אפשרויות עבור מהדר Room. התוסף מגדיר את הפרויקט כך שסכימות שנוצרו (שהן פלט של משימות ההידור ומשמשות להעברות אוטומטיות) מוגדרות בצורה נכונה כדי ליצור בנייה שניתן לשחזר ולשמור במטמון.
כדי להוסיף את הפלאגין, מגדירים את הפלאגין ואת הגרסה שלו בקובץ ה-build של Gradle ברמה העליונה.
מגניב
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
בקובץ ה-build של Gradle ברמת המודול, מפעילים את הפלאגין ומשתמשים בתוסף room.
מגניב
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
חובה להגדיר schemaDirectory כשמשתמשים ב-Room Gradle Plugin. הפעולה הזו תגדיר את מהדר Room ואת משימות ההידור השונות ואת הקצוות העורפיים שלו (javac, KAPT, KSP) כך שקבצי הסכימה יופקו לתיקיות עם טעמים שונים, לדוגמה schemas/flavorOneDebug/com.package.MyDatabase/1.json. צריך להוסיף את הקבצים האלה למאגר כדי להשתמש בהם לאימות ולהעברות אוטומטיות.
אי אפשר להגדיר חלק מהאפשרויות בכל הגרסאות של Room Gradle Plugin, למרות שהן נתמכות על ידי Room compiler. בטבלה שלמטה מפורטת כל אפשרות, ומוצגת הגרסה של Room Gradle Plugin שבה נוספה תמיכה בהגדרת האפשרות הזו באמצעות התוסף room. אם הגרסה שלכם נמוכה יותר, או אם האפשרות עדיין לא נתמכת, אתם יכולים להשתמש במקום זאת באפשרויות של מעבד הערות.
| אפשרות | מגרסה |
|---|---|
room.schemaLocation (שדה חובה) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
שימוש באפשרויות של מעבד אנוטציות
אם אתם לא משתמשים ב-Room Gradle Plugin, או אם האפשרות שאתם רוצים לא נתמכת בגרסה של הפלאגין, אתם יכולים להגדיר את Room באמצעות אפשרויות של מעבד הערות, כמו שמתואר במאמר הוספת תלות ב-build. האופן שבו מציינים אפשרויות של הערות תלוי בשאלה אם משתמשים ב-KSP או ב-KAPT עבור Room.
מגניב
// For KSP ksp { arg("option_name", "option_value") // other otions... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += [ "option_name":"option_value", // other options... ] } } } }
Kotlin
// For KSP ksp { arg("option_name", "option_value") // other options... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "option_name" to "option_value", // other options... ) } } } }
room.schemaLocation הוא ספרייה ולא סוג פרימיטיבי, ולכן צריך להשתמש ב-CommandLineArgumentsProvider כשמוסיפים את האפשרות הזו כדי ש-Gradle ידע על הספרייה הזו כשהוא מבצע בדיקות עדכניות.
העברת מסד נתונים של Room
מציג הטמעה מלאה של CommandLineArgumentsProvider שמספקת
את מיקום הסכימה.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גרסה 2.8
גרסה 2.8.5
9 בספטמבר 2026
androidx.room:room-*:2.8.5 מופץ. גרסה 2.8.5 מכילה את השמירות האלה.
תיקוני באגים
- שאילתות להשעיית חדר ופעולות של מעקב אחר ביטול תוקף יחזירו עכשיו
IllegalStateExceptionכשקוראים להן אחרי סגירת מסד הנתונים. (Ic0166, b/543076356)
גרסה 2.8.4
19 בנובמבר 2025
androidx.room:room-*:2.8.4 מופץ. גרסה 2.8.4 מכילה את השמירות האלה.
תיקוני באגים
- נוסף מטמון של הצהרות מוכנות למאגר החיבורים של Room כשמשתמשים ב-
SQLiteDriverשלא כולל מאגר באופן פנימי, כמוBundledSQLiteDriver. כך משפרים את הביצועים בהרצה חוזרת של אותה הצהרת SQL. (5f43bc, b/319653917) - תוקנה בעיה שגרמה לכך שבהודעת השגיאה בפועל או בהודעת השגיאה הצפויה באימות הסכימה חסר מידע. (8b23da, b/454531083)
- תוקנה בעיה שגרמה לכך שפונקציות DAO עם משתני סוג לא נכללו ביצירת קוד Kotlin של
@TransactionRoom. (a8365d, b/251316420) - כדי לשפר את הביצועים של
SupportSQLiteWrapper של Room, כדאי להימנע משימוש ב-thread hops ולשמור על אותה התנהגות חסימה כמו ב-APIs שלSupportSQLiteDatabase. (fc70e4)
גרסה 2.8.3
22 באוקטובר 2025
androidx.room:room-*:2.8.3 מופץ. גרסה 2.8.3 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיית ביצועים ב-Room SQLite Wrapper שגרמה למספר מוגזם של קריאות JNI ולפגיעה משמעותית בביצועים במהלך איטרציה על Cursor.
גרסה 2.8.2
8 באוקטובר 2025
androidx.room:room-*:2.8.2 מופץ. גרסה 2.8.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקן מצב של קיפאון שיכול היה להתרחש כשפותחים מחדש מסד נתונים שנסגר אוטומטית מתוך פליטת Flow (b/446643789).
גרסה 2.8.1
24 בספטמבר 2025
androidx.room:room-*:2.8.1 מופץ. גרסה 2.8.1 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה קריסה של מעבד שקרתה כשמעבדים פונקציית DAO עם lambda של השהיה. (b/442220723).
- תוקנה בעיית מרוץ תהליכים שגרמה לכך ש-Flows לא קיבל את העדכון האחרון.
גרסה 2.8.0
10 בספטמבר 2025
androidx.room:room-*:2.8.0 מופץ. גרסה 2.8.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.7.0:
- נוסף ארטיפקט חדש
androidx.room:room-sqlite-wrapperשמכיל ממשקי API לקבלת wrapper שלSupportSQLiteDatabaseמ-RoomDatabaseעםSQLiteDriverמוגדר. כדי לקבל את העטיפה, משתמשים בפונקציית התוסף החדשהRoomDatabase.getSupportWrapper(). זהו ארטיפקט תאימות שנועד לשמור על השימוש ב-SupportSQLiteDatabase, שמתקבל בדרך כלל מ-roomDatabase.openHelper.writableDatabase, גם אם מסד הנתונים של Room מוגדר עםSQLiteDriver. העטיפה הזו שימושית להעברה מצטברת של בסיסי קוד שרוצים להשתמש ב-SQLiteDriver APIs, אבל יש להם שימושים נרחבים ב-SupportSQLite APIs, והם רוצים לנצל את היתרונות שלBundledSQLiteDriver. מידע נוסף זמין במדריך להעברת נתונים. - הוספנו תמיכה ביעדים של KMP Watch OS ו-Tv OS.
- עדכנו את גרסת ה-minSDK של Android בספרייה מ-API 21 ל-API 23
גרסה 2.8.0-rc02
27 באוגוסט 2025
androidx.room:room-*:2.8.0-rc02 מופץ. גרסה 2.8.0-rc02 מכילה את השמירות האלה.
שינויים ב-API
- עדכון של minSDK מ-API 21 ל-API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- עדכנו את הגרסה המינימלית של פלאגין של Android Gradle (AGP) שתואמת ל-Room Gradle Plugin מ-8.1 ל-8.4. (Ia0d28)
תיקוני באגים
- תוקנה בעיה שגרמה לכך שבוצעה העברה הרסנית גם אם היה זמין נתיב העברה למסד נתונים מוכן מראש (b/432634197).
גרסה 2.8.0-rc01
13 באוגוסט 2025
androidx.room:room-*:2.8.0-rc01 מופץ. גרסה 2.8.0-rc01 מכילה את השמירות האלה.
שינויים ב-API
תיקוני באגים
- תוקנה בעיית מרוץ תהליכים שבה Room Flows לא פלט את תוצאת השאילתה האחרונה במצב אסינכרוני של שאילתות מרובות או כתיבה מרובה. (Ic9a3c)
גרסה 2.8.0-beta01
1 באוגוסט 2025
androidx.room:room-*:2.8.0-beta01 מופץ. גרסה 2.8.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- שמות של טבלאות ותצוגות מסומנים עכשיו בתו בריחה (escape) בצורה תקינה במהלך העברות הרסניות. (9e55f8, b/427095319)
גרסה 2.8.0-alpha01
16 ביולי 2025
androidx.room:room-*:2.8.0-alpha01 מופץ. גרסה 2.8.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- נוסף ארטיפקט חדש
androidx.room:room-sqlite-wrapperשמכיל ממשקי API לקבלתSupportSQLiteDatabasewrapper שלRoomDatabaseעםSQLiteDriverמוגדר. כדי לקבל את העטיפה, משתמשים בפונקציית התוסף החדשהRoomDatabase.getSupportWrapper(). זהו ארטיפקט תאימות שנועד לשמור על השימוש ב-SupportSQLiteDatabase, שמתקבל בדרך כלל מ-RoomDatabase.openHelper.writableDatabase, גם אם מסד הנתונים של Room מוגדר עםSQLiteDriver. העטיפה הזו שימושית להעברה מצטברת של בסיסי קוד שרוצים להשתמש ב-SQLiteDriverאבל יש להם שימושים נרחבים בממשקי ה-API שלSupportSQLite, ועדיין רוצים ליהנות מהיתרונות שלBundledSQLiteDriver. (Icf6ac) - הוספת יעדי KMP ל-Watch OS ול-TV OS (I228f6, b/394238801)
תיקוני באגים
- תוקן מצב של קיפאון שיכול לקרות מדי פעם כשמשתמשים בהשהיית עסקאות וב-
AndroidSQLiteDriver. (b/415006268)
גרסה 2.7
גרסה 2.7.2
18 ביוני 2025
androidx.room:room-*:2.7.2 מופץ. גרסה 2.7.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה הבעיה שבה ערכי ההערות נקראו בצורה שגויה כשמעבדים מקורות מקומיים באמצעות KSP, ולפעמים ייצוא הסכימה היה חסר. (b/416549580)
- תוקן באג שבו הערות מובילות ב-SQL גרמו להצהרות להתבצע כאילו היו שאילתות לא לקריאה. (b/413061402)
- תוקנה בעיה שגרמה לכשל בהגדרת Gradle Plugin של Room בגלל שספריית הסכימה הייתה ריקה. (b/417823384)
- הספרייה לא תציג יותר את השגיאה
SQLiteExceptionאם לוקח יותר מדי זמן ליצור חיבור, אלא תשלח הודעת יומן. רישום ביומן במקום הפעלה של חריגה מאפשר לעקוף את ההשעיה של לולאות ב-iOS שגורמת ל-Room לפרש בצורה שגויה את הזמן הקצוב לתפוגה שמתרחש ב-Kotlin Coroutine בזמן קבלת החיבור, וכך מונעת את הפעלת החריגה כשמעבירים אפליקציית iOS לרקע ואז מפעילים אותה מחדש באמצע פעולת מסד נתונים. (b/422448815)
גרסה 2.7.1
23 באפריל 2025
androidx.room:room-*:2.7.1 מופץ. גרסה 2.7.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון באג
IndexOutOfBoundsExceptionבמהלך אימות של ממיר סוגים שסופק. (b/409804755). - תמיכה ב-
RoomDatabase.runInTransaction()כש-SQLiteDriverמוגדר עם Room. (b/408364828).
גרסה 2.7.0
9 באפריל 2025
androidx.room:room-*:2.7.0 מופץ. גרסה 2.7.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.6.0
- תמיכה ב-Kotlin Multiplatform (KMP): בגרסה הזו, Room עבר רפקטורינג והפך לספריית Kotlin Multiplatform (KMP). הפלטפורמות הנתמכות כרגע הן Android, iOS, JVM (מחשב), Mac מקומי ו-Linux מקומי. מידע נוסף על תחילת השימוש ב-Room KMP זמין במסמכים הרשמיים של Room KMP. במסגרת התמיכה ב-KMP, אפשר גם להגדיר את Room עם
SQLiteDriver. כדי לקבל מידע על העברת אפליקציה קיימת אל ממשקי ה-API של מנהל ההתקן ואל Room KMP, אפשר לעיין במסמכי ההעברה. - האפשרות Kotlin Code Generation on KSP מופעלת כברירת מחדל אם העיבוד מתבצע באמצעות KSP. בפרויקטים של KAPT או Java בלבד, Room עדיין ייצור מקורות Java.
- Kotlin 2.0 ו-KSP2: Room מכוון עכשיו לשפת Kotlin 2.0 וידרוש מהפרויקטים גם קומפילציה עם Kotlin 2.0 וגרסה שוות ערך או גבוהה יותר של השפה. נוספה גם תמיכה ב-KSP2, ומומלץ להשתמש בו כשמשתמשים ב-Room עם Kotlin 2.0 ומעלה.
גרסה 2.7.0-rc03
26 במרץ 2025
androidx.room:room-*:2.7.0-rc03 מופץ. גרסה 2.7.0-rc03 מכילה את השמירות האלה.
תיקוני באגים
- השגיאה
InterruptedExceptionלא מופיעה יותר כשמתבצעת הפרעה לשרשור במהלך ההפעלה של ממשקי API חוסמים של Room, כולל פונקציות חוסמות של DAO (b/400584611). - מנסים להטמיע מחדש את מאגר החיבורים של Room כדי לפתור את הבעיה
SQLException: Error code: 5, message: Timed out attempting to acquire a reader connection.ובעיות דומות (b/380088809).
גרסה 2.7.0-rc02
12 במרץ 2025
androidx.room:room-*:2.7.0-rc02 מופץ. גרסה 2.7.0-rc02 מכילה את השמירות האלה.
תיקוני באגים
- תיקון של העברות אוטומטיות שטיפלו באופן שגוי בעמודה חדשה בטבלת FTS. (b/348227770, Ic53f3)
- תוקן קראש של room-compiler שנגרם בגלל
NullPointerExceptionבמהלך עיבוד של מקורות שאינם JVM באמצעות KSP. (b/396607230, I693c9) - תוקנה הבעיה שבה Room לא מבטל את התוקף של טבלאות בסיום השימוש בחיבור הכתיבה. (b/340606803, I73ef6)
גרסה 2.7.0-rc01
26 בפברואר 2025
androidx.room:room-*:2.7.0-rc01 מופץ. גרסה 2.7.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- נפתרה בעיה שגרמה לכך ש-Room לא הגדיר את
busy_timeoutבחיבור הראשוני למסד הנתונים, מה שהוביל לבעיות ב-SQLException: Error code: 5, message: database is locked(I93208, b/380088809). - תוקנה בעיה בקומפיילר של Room שגרמה לקריסת מעבד KSP כשמעבדים קבוצות מקוריות (כמו iOS) ב-Kotlin 2.1.x וב-KSP1 (I883b8, b/396607230).
גרסה 2.7.0-beta01
12 בפברואר 2025
androidx.room:room-*:2.7.0-beta01 מופץ. גרסה 2.7.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לכך ש-
RoomDatabase.inTransaction()פתחה מסד נתונים סגור כשהיא לא הייתה אמורה לעשות זאת, והייתה אמורה להחזיר במהירות את הערך false אם מסד הנתונים סגור (b/325432967). - תוקנה קריסה (
IllegalArgumentException: not a valid name) בקומפיילר של Room במהלך עיבוד פונקציות DAO עם מחלקות מוטבעות או מחלקות ערכים של Kotlin (b/388299754). - צריך לכלול כללי Proguard בפריט המידע שנוצר בתהליך פיתוח (Artifact) של JVM ב-
room-runtime, כדי שהבונה שמוגדר כברירת מחדל של הטמעת מסד הנתונים שנוצר לא יוסר, כי הוא נמצא בשימוש באתחול שמוגדר כברירת מחדל של Room שמשתמש בהשתקפות (b/392657750).
גרסה 2.7.0-alpha13
29 בינואר 2025
androidx.room:room-*:2.7.0-alpha13 מופץ. גרסה 2.7.0-alpha13 מכילה את השמירות האלה.
שינויים ב-API
- Room מכוון עכשיו לשפת Kotlin 2.0, ולכן הפרויקטים יצטרכו לעבור קומפילציה גם עם Kotlin 2.0 וגרסה שוות ערך או גרסה גבוהה יותר של השפה. (I8efb0, b/315461431, b/384600605)
תיקוני באגים
- תוקנה בעיה בכלי ליצירת מסד נתונים של Room KMP, שבה נעשה שימוש בשם פשוט במקום בנתיב ב-Android, והנתיב שנפתר של קובץ מסד הנתונים לא נמצא בספריית הנתונים של האפליקציה. (I83315, b/377830104)
- תוקנה בעיה בפלאגין Room Gradle, שבה הגדרת קלט ופלט של סכימה גרמה לבעיה בפרויקטים של Android:
property 'inputDirectory' is final and cannot be changed any further.(1dbb4c, b/376071291) - נוספה תמיכה ב-KSP2 ב-Room Gradle Plugin, כדי לפתור בעיה שבה ספריית הסכימה לא הוגדרה כראוי על ידי הפלאגין. (Iec3c4, b/379159770)
חישוב צריכת הנתונים
- תוקנה בעיה בשילוב של
Roomחלוקה לדפים שגרמה לקפיצות בממשק המשתמש כשהמפתח הראשוני לרענון היה קרוב מדי לסוף הרשימה. תודה לאווה! (I2abbe, b/389729367)
גרסה 2.7.0-alpha12
11 בדצמבר 2024
androidx.room:room-*:2.7.0-alpha12 מופץ. גרסה 2.7.0-alpha12 מכילה את השמירות האלה.
שינויים ב-API
- מוסיפים את ה-API הניסיוני
RoomDatabase.Builder.setInMemoryTrackingMode()כדי להגדיר אם Room ישתמש בטבלה בזיכרון או לא למעקב אחר ביטול תוקף. (I2a9b2, b/185414040)
תיקוני באגים
- העברות הרסניות מפילות עכשיו תצוגות כדי להבטיח שהן נוצרות מחדש, ומתאימות את ההתנהגות כשההגדרה
allowDestructiveMigrationForAllTablesמופעלת (ברירת המחדל של KMP) להתנהגות הקיימת כשהיא מושבתת. (0a3e83, b/381518941)
גרסה 2.7.0-alpha11
30 באוקטובר 2024
androidx.room:room-*:2.7.0-alpha11 מופץ. גרסה 2.7.0-alpha11 מכילה את השמירות האלה.
שינויים ב-API
- צריך לחזור לחתימת השיטה
convertRows()שהוספתם כדי להפוך אותה לפונקציית השהיה שמקבלתRawRoomQueryלהפעלת פייג'ינג בחדר. (Ie57b5, b/369136627)
תיקוני באגים
- תוקנה הבעיה שבה נוצר קוד לא תקין בהודעות לכל החדר כשמשתמשים ב-
@Relationבשילוב עםPagingSource.
גרסה 2.7.0-alpha10
16 באוקטובר 2024
androidx.room:room-*:2.7.0-alpha10 מופץ. גרסה 2.7.0-alpha10 מכילה את השמירות האלה.
שינויים ב-API
- יצירת מחלקה פנימית
ByteArrayWrapperכדי לתמוך ב-Relations עםByteBufferבפלטפורמות שאינן Android ו-JVM. (I75543, b/367205685) - מוסיפים את
SQLiteStatement.getColumnType()יחד עם קבועי התוצאה השונים שלSQLITE_DATA_*כדי לאפשר אחזור של סוג הנתונים של עמודה. (I1985c, b/369636251)
גרסה 2.7.0-alpha09
2 באוקטובר 2024
androidx.room:room-*:2.7.0-alpha09 מופץ. גרסה 2.7.0-alpha09 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בהטמעה של
room-pagingב-KMP שגרמה לError code: 8, message: attempt to write a readonly databaseבגלל התחלה של טרנזקציית כתיבה בחיבור קריאה. (b/368380988)
גרסה 2.7.0-alpha08
18 בספטמבר 2024
androidx.room:room-*:2.7.0-alpha08 מופץ. גרסה 2.7.0-alpha08 מכילה את השמירות האלה.
תכונות חדשות
- העברנו את הפריטים
room-pagingכך שיהיו תואמים ל-KMP. (Ib8756, b/339934824) - ממשק ה-API
invalidationTrackerFlow()עבר המרה לממשק API מצד ראשון בשםInvalidationTracker.createFlow(), ועכשיו הוא זמין לערכות מקור שאינן Android בפרויקטים של KMP. (I1fbfa, (I8fb29), b/329291639, b/329315924)
שינויים ב-API
- הסרנו או החלפנו את כל האזהרות והודעות השגיאה ב-Room שבהן נעשה שימוש במילה
Cursor, כיCursorהיא כבר לא מונח כללי מדויק לשימוש בגרסת ה-KMP של Room. (Id8cd9, b/334087492)
תיקוני באגים
- תוקנה בעיה שבה Room KMP ניסה להפיק קוד באמצעות
UUIDלפלטפורמות שאינן JVM. (b/362994709) - תוקנה בעיה ב-Room Gradle Plugin שגרמה לשגיאה כמו 'Cannot change attributes of configuration … after it has been locked for mutation' כשנעשה בו שימוש בפרויקט KMP עם Compose Multiplatform. (b/343408758)
גרסה 2.7.0-alpha07
21 באוגוסט 2024
androidx.room:room-*:2.7.0-alpha07 מופץ. גרסה 2.7.0-alpha07 מכילה את השמירות האלה.
תכונות חדשות
- התוסף Room Gradle יוסיף עכשיו באופן אוטומטי את הסכימות שיוצאו למקורות המשאבים של בדיקת המכשור של Android, כדי שאפשר יהיה להשתמש בהן על ידי
MigrationTestHelper.
תיקוני באגים
- תוקנה בעיה שגרמה לכך שהערך 'actual' שנוצר על ידי הפונקציה
RoomDatabaseConstructorלא כלל את משנה הערך 'actual' בפונקציהinitializeאם הפונקציה הזו גם בוטלה בהצהרה expect. (359631627) - תוקנה בעיה שגרמה לכך שהערך 'בפועל' שנוצר של
RoomDatabaseConstructorלא תאם לערך הנראות של ההצהרה 'צפוי'. (358138953)
גרסה 2.7.0-alpha06
7 באוגוסט 2024
androidx.room:room-*:2.7.0-alpha06 מופץ. גרסה 2.7.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- שינוי הגדרת יצירת המופע של
RoomDatabaseבפרויקט KMP.
בגלל מודל הקומפילציה של Kotlin 2.0, אי אפשר יותר להשתמש באסטרטגיה של הפניה לפונקציה שעומדת להיווצר, בשם instantiateImpl(). השקנו שני ממשקי API חדשים, @ConstructedBy ו-RoomDatabaseConstructor, שמחליפים את האסטרטגיה instantiateImpl(). זו השיטה החדשה:
מגדירים אובייקט expect שמטמיע את
RoomDatabaseConstructorexpect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>מקשרים את האובייקט להצהרת
@Databaseבאמצעות@ConstructedBy@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabaseיצירת מופע חדש של מסד נתונים בלי להעביר ארגומנט של מפעל
fun createNewDatabase(path: String) = Room.databaseBuilder<AppDatabase>(name = path) .setDriver(BundledSQLiteDriver()) .setQueryCoroutineContext(Dispatchers.IO) .build()
תיקונים b/316978491, b/338446862 ו-b/342905180
- תמיכה ב-
@RawQueryב-Room KMP על ידי הוספת API חדש בשםRoomRawQueryשדומה ל-SupportSQLiteQueryמבחינת השמירה של מחרוזת ה-SQL הגולמית, ופונקציה לקשירת ארגומנטים להצהרה.@RawQueryפונקציות עם הערות (annotated) יכולות עכשיו לקבלRoomRawQueryכפרמטר יחיד. (Iea844, b/330586815) - מוסיפים עומס יתר של
setQueryCallback()שמקבלCoroutineContext. (Id66ff, b/309996304) - הוספנו תמיכה ב
linuxArm64יעדים של Kotlin Multiplatform (I139d3, b/338268719)
תיקוני באגים
- תוקנה בעיה שבה Room יצר באופן שגוי קריאה ל-
recursiveFetchArrayMapביעדים שאינם Android. (710c36, b/352482325) - תוקנה בעיה שבה לפעמים Room זורק חריגה לגבי 'פג הזמן הקצוב לניסיון ליצור חיבור' בפרויקט KMP. (fa72d0, b/347737870)
- תיקנו בעיה בהעברות אוטומטיות שגרמה לבדיקה של מפתחות זרים מוקדם מדי, לפני שסכימות של טבלאות אחרות השתנו כדי להתאים למפתחות הזרים החדשים. (7672c0, b/352085724)
גרסה 2.7.0-alpha05
10 ביולי 2024
androidx.room:room-*:2.7.0-alpha05 מופץ. גרסה 2.7.0-alpha05 מכילה את השמירות האלה.
שינויים ב-API
- השם של
SQLiteKtשונה ל-SQLiteושלBundledSQLiteKtל-BundledSQLite. (I8b501)
תיקוני באגים
- תוקן באג שבו
RoomDatabaseנתקע או מוציא שגיאה עם פסק זמן לחיבור כשמשתמשים ב-AndroidSQLiteDriver.
גרסה 2.7.0-alpha04
12 ביוני 2024
androidx.room:room-*:2.7.0-alpha04 מופץ. גרסה 2.7.0-alpha04 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה במעבד אנוטציות (Annotation processor) של Room שגרמה ליצירת קוד KMP לא תואם כשסוג ההחזרה של מיפוי מרובה הוגדר ב-DAO. (b/340983093)
- תוקנה בעיה שבה Room לא הצליח למצוא את הטמעת מסד הנתונים שנוצרה אם ל-
@Databaseannotated class לא היה חבילה. (b/342097292) - תוקנה בעיה שבה הפעלה של סגירה אוטומטית וביטול תוקף של כמה מופעים גרמה לפעמים ל-
ConcurrentModificationExceptionכשהמסד נתונים נסגר אוטומטית בגלל חוסר פעילות.
גרסה 2.7.0-alpha03
29 במאי 2024
androidx.room:room-*:2.7.0-alpha03 מופץ. גרסה 2.7.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- תיקנו בעיות שונות שקשורות ל-Kotlin 2.0 ול-KSP 2.0. שימו לב שהתמיכה ב-Kotlin 2.0 עם KSP 2 עדיין לא מלאה, והצוות עובד על ממשקי ה-API השונים ועל שינויים בהתנהגות של הקומפיילר החדש. (b/314151707)
גרסה 2.7.0-alpha02
14 במאי 2024
androidx.room:room-*:2.7.0-alpha02 מופץ. גרסה 2.7.0-alpha02 מכילה את השמירות האלה.
תיקוני באגים
- תוקנו בעיות שונות ב-KSP.
גרסה 2.7.0-alpha01
1 במאי 2024
androidx.room:room-*:2.7.0-alpha01 מופץ. גרסה 2.7.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- תמיכה ב-Kotlin Multiplatform (KMP): בגרסה הזו, בוצע רפקטורינג ב-Room כדי להפוך אותה לספריית Kotlin Multiplatform (KMP). למרות שעדיין יש עבודה לעשות, בגרסה הזו אנחנו מציגים גרסה חדשה של Room שבה רוב הפונקציונליות עברה תהליך של 'הפיכה לכללית' (כלומר, היא מתאימה למספר פלטפורמות). הפלטפורמות הנתמכות כרגע הן Android, iOS, JVM (מחשב), Mac מקומי ו-Linux מקומי. כל פונקציה שחסרה בפלטפורמות החדשות שנתמכות תהפוך ל'מלאה' בגרסאות הקרובות של Room.
מידע נוסף על תחילת השימוש ב-Room KMP זמין במסמכים הרשמיים של Room KMP.
- האפשרות Kotlin Code Generation on KSP (יצירת קוד Kotlin ב-KSP) מופעלת כברירת מחדל אם העיבוד מתבצע באמצעות KSP. בפרויקטים של KAPT או Java בלבד, Room עדיין ייצור מקורות Java.
שינויים ב-API
- נוספה פונקציית עומס יתר של
Room.databaseBuilder()שמקבלת פרמטר lambda שנועד לשימוש עם פונקציה שנוצרה על ידי Room, כדי להימנע משימוש ברפלקציה כשיוצרים מופע של ההטמעה שנוצרה שלRoomDatabase. דוגמה לשימוש:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- הוספנו לבונה API להגדרת חדר עם
CoroutineContext:RoomDatabase.Builder.setQueryCoroutineContext. הערה: אפשר להגדירRoomDatabaseרק עם מפעילים באמצעותsetQueryExecutorאו עם הקשר של Coroutine, אבל לא עם שניהם. - נוסף API להגדרת חדר עם
SQLiteנהג:RoomDatabase.Builder.setDriver(). מידע נוסף עלSQLiteDriver API זמין במסמכי התיעוד של SQLite KMP - הוספנו ממשקי API לגישה ל-
SQLiteConnectionהבסיסי מממשקי API של מנהלי התקנים:RoomDatabase.useReaderConnectionו-RoomDatabase.useWriterConnection. - ל-callbacks שקשורים לחדרים יש עכשיו גרסה עם עומס יתר שמקבלת
SQLiteConnectionבמקוםSupportSQLiteDatabase. הכוונה היא לדרוס את הערכים האלה כשמעבירים לפרויקט KMP. מידע נוסף על העברת השימוש ב-Room באפליקציית Android למודול KMP משותף זמין במדריך להעברה. הפונקציות להחזרת ערך הן:Migration.migrate(SQLiteConnection)AutoMigrationSpec.onPostMigrate(SQLiteConnection)RoomDatabase.Callback.onCreate(SQLiteConnection)RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)RoomDatabase.Callback.onOpen(SQLiteConnection)
- ארטיפקט ה-KTX
androidx.room:room-ktxמוזג עםandroidx.room:room-runtimeיחד עם כל ממשקי ה-API שלו, ועכשיו הארטיפקט ריק. צריך להסיר אותו מרשימת התלות.
גרסה 2.6
גרסה 2.6.1
29 בנובמבר 2023
androidx.room:room-*:2.6.1 מופץ. גרסה 2.6.1 מכילה את השמירות האלה.
תיקוני באגים
- נפתרה בעיה בקוד שנוצר, שבה ערך ברירת המחדל של עמודות Double ב-
EntityCursorConverterהוגדר כ-0 במקום כ-0.0. נכלל גם תיקון פוטנציאלי למקרה קצה דומה בעמודות מסוג Float. (Id75f5, b/304584179) - חריגים שמופעלים מ-
PagingSourceloads יועברו עכשיו כ-LoadStateUpdateשלLoadResult.Errorשמכיל את ה-Throwable. אפשר לראות את מצב השגיאה הזה דרךPagingDataAdapter.loadStateFlow(Views)אוLazyPagingItems.loadState(Compose). הערה: מדובר בשינוי התנהגותי. בעבר, שגיאות טעינה היו מופיעות כחריגה שהופעלה על ידי שיטת ה-DAO שהפעילה את הטעינה. (I93887, b/302708983)
גרסה 2.6.0
18 באוקטובר 2023
androidx.room:room-*:2.6.0 מופץ. גרסה 2.6.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.5.0
- האפשרות להפעיל יצירת קוד Kotlin (או Kotlin CodeGen) זמינה עכשיו ב-Room KSP. (4297ec0). כדי להפעיל את Kotlin CodeGen ב-Room, מוסיפים את שם האפשרות
room.generateKotlinלאפשרויות המעבד של KSP. פרטים נוספים על העברת אפשרויות מעבד ל-KSP זמינים במסמכי התיעוד של KSP.
הערה: כשמשתמשים ב-Kotlin CodeGen, חשוב לדעת שיש הגבלות נוספות. אסור להשתמש במאפיינים מופשטים בתור פונקציות get של DAO או שאילתות DAO ב-Kotlin CodeGen, ובמקום זאת צריך לשכתב אותם כפונקציות כדי למנוע את התפיסה השגויה שלפיה ערך המאפיין הוא קבוע וכולל תוצאה קבועה שמאוחסנת. הגבלה נוספת שהוספנו היא שאסור יותר להשתמש ב-Room ב-Kotlin CodeGen בסוגי החזרה של אוספים שניתן להגדיר כ-Nullable.
אזהרה: יכול להיות שהפרויקטים שלכם יהיו יותר מחמירים מבחינת האפשרות שערך יהיה ריק (nullability) כשמשתמשים ב-Kotlin CodeGen. ב-Kotlin CodeGen, המאפיין המציין אם ערך יכול להיות ריק (nullability) של ארגומנטים מסוג type חשוב, בעוד שב-Java המערכת מתעלמת ממנו ברוב המקרים. לדוגמה, נניח שיש לכם סוג החזרה `Flow<foo\>` והטבלה ריקה. ב-Java CodeGen, זה לא יגרום לבעיות, אבל ב-Kotlin CodeGen, תופיע שגיאה. כדי להימנע מכך, תצטרכו להשתמש ב-`Flow<foo?\>`, בהנחה שערך null מוחזר. </foo?\></foo\>
- הוספנו ל-Room את הארטיפקט החדש של Room Gradle Plugin עם המזהה
androidx.room, שפותר בעיות שונות שקיימות ב-Room בנוגע לקלט ולפלט של סכימות באמצעות אפשרויות של מעבד הערות ב-Gradle. פרטים נוספים זמינים בהערות המוצר של Room גרסה 2.6.0-alpha02. - יש עכשיו תמיכה ב-KSP במחלקות ערכים בישויות Room. (4194095)
- יש עכשיו תמיכה ב-Room בסוגי החזרה של מפות מקוננות בפונקציות DAO. (I13f48, 203008711)
גרסה 2.6.0-rc01
20 בספטמבר 2023
androidx.room:room-*:2.6.0-rc01 מופץ. גרסה 2.6.0-rc01 מכילה את השמירות האלה.
גרסה 2.6.0-beta01
23 באוגוסט 2023
androidx.room:room-*:2.6.0-beta01 מופץ. גרסה 2.6.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- טיפול בחריגה
SQLiteבמקרה המיוחד במהלך פעולת upsert אם החריגה2067 SQLITE_CONSTRAINT_UNIQUEמופעלת במהלך פעולת upsert, פעולת ה-upsert צריכה לבצע עדכון. (If2849, b/243039555)
גרסה 2.6.0-alpha03
9 באוגוסט 2023
androidx.room:room-*:2.6.0-alpha03 מופץ. גרסה 2.6.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
שינויים ב-API
- נוצרה הערת סוג חדשה בשם
@MapColumnכדי להחליף את@MapInfo, שיצאה משימוש. לכל שם עמודה (keyColumnName, valueColumnNameאו שניהם) שצוין בהערה@MapInfo, צריך להצהיר על הערה@MapColumnעםcolumnNameבלבד, ולהשתמש בהערה בארגומנט הספציפי של הטיפוס שאליו מתבצעת ההפניה (המפתח או הערך של המיפוי) בסוג ההחזרה של פונקציית ה-DAO. הסיבה לכך היא שההערה@MapColumnמשמשת ישירות בארגומנט מסוג type בתוך סוג ההחזרה של פונקציית DAO, במקום בפונקציה עצמה כמו@MapInfo. מידע נוסף מופיע במאמרי העזרה בנושא@MapColumn. (Ib0305, b/203008711) - קבצי API עודכנו כדי להוסיף הערות על השבתת תאימות (I8e87a, b/287516207)
- ממשקי ה-API של Room Gradle plugin עודכנו כך שלא תמיד נדרשות הגדרות לכל וריאנט. המשמעות היא שהפלאגין יכול לקבל מיקום גלובלי לכל הווריאציות בלי ליצור כמה ספריות, וכך לאפשר העברות חלקות יותר. בנוסף, הוא גמיש מספיק כדי לאפשר הגדרה ידנית של טעמים או סכימות של סוגי build, תוך שמירה על היתרונות של הפלאגין (builds שניתן לשחזר ולשמור במטמון). (I09d6f, b/278266663)
תיקוני באגים
- תוקנה פגיעות פוטנציאלית של דליפת זיכרון ב-
QueryInterceptorStatement. (I193d1) - תוקנה התנהגות שגויה בפונקציה
QueryInterceptorDatabase execSQL(). (Iefdc8)
גרסה 2.6.0-alpha02
21 ביוני 2023
androidx.room:room-*:2.6.0-alpha02 מופץ. גרסה 2.6.0-alpha02 מכילה את השמירות האלה.
פלאגין Room Gradle
הגרסה החדשה הזו מכילה ארטיפקט חדש ל-Room Gradle Plugin עם מזהה androidx.room, שפותר בעיות קיימות שונות ב-Room בנוגע לקלט ולפלט של סכימות באמצעות אפשרויות של מעבד הערות ב-Gradle. התוסף Room Gradle מגדיר את הפרויקט כך שהסכימות שנוצרות ומשמשות להעברות אוטומטיות, ושהן פלט של משימות ההידור, מוגדרות בצורה נכונה כדי ליצור בנייה שניתן לשחזר ולשמור במטמון. הפלאגין מציע DSL להגדרת המיקום של סכימת הבסיס:
room {
schemaDirectory("$projectDir/schemas/")
}
התוסף יגדיר את קומפיילר Room ואת משימות הקומפילציה השונות ואת קצה העורפי (javac, KAPT, KSP) כדי ליצור קובצי סכימה בתיקיות עם טעמים, כלומר schemas/flavorOneDebug/com.package.MyDatabase/1.json. כמו תמיד, הקבצים האלה נשמרים במאגר כדי לשמש לאימות ולהעברות אוטומטיות. כשעוברים לשימוש בפלאגין במקום באפשרויות של מעבד אנוטציות (Annotation processor), צריך להעתיק את קובצי הסכימה הקיימים לספריות הגרסאות שנוצרו על ידי הפלאגין. זו פעולת מיגרציה חד-פעמית שצריך לבצע באופן ידני. תיעוד הסכימה בכתובת developers.android.com יעודכן בעתיד אחרי שנטפל במשוב והתוסף יגיע למצב יציב. כדאי לנסות אותו.
שינויים ב-API
-
RoomDatabase.QueryCallbackהוגדר כממשק פונקציונלי כדי לאפשר שימוש בהמרת SAM. (Iab8ea, b/281008549)
תיקוני באגים
- פתרון בעיה שמתעוררת כשמפעילים את מסד הנתונים ב-Robolectric אחרי העברת מקורות Room מ-Java ל-Kotlin. (Ic053c, b/274924903)
גרסה 2.6.0-alpha01
22 במרץ 2023
androidx.room:room-*:2.6.0-alpha01 מופץ. גרסה 2.6.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- תמיכה במחלקות ערכים ב-Room עבור KSP. אפשר מעכשיו להשתמש ב-Room גם בשיעורי ערכים ביישות. (4194095)
- מעכשיו אפשר להפעיל את יצירת קוד Kotlin(או Kotlin CodeGen) ב-Room (4297ec0). כדי להפעיל את Kotlin CodeGen ב-Room, מוסיפים את שם האפשרות
room.generateKotlinלאפשרויות המעבד של KSP. פרטים נוספים על העברת אפשרויות מעבד ל-KSP זמינים במסמכי התיעוד של KSP.
הערה: כשמשתמשים ב-Kotlin CodeGen, חשוב לדעת שיש הגבלות נוספות. אסור להשתמש במאפיינים מופשטים בתור פונקציות get של DAO או שאילתות DAO ב-Kotlin CodeGen, ובמקום זאת צריך לשכתב אותם כפונקציות כדי למנוע את התפיסה השגויה שלפיה ערך המאפיין הוא קבוע וכולל תוצאה קבועה שמאוחסנת. הגבלה נוספת שהוספנו היא שאסור יותר להשתמש ב-Room ב-Kotlin CodeGen בסוגי החזרה של אוספים שניתן להגדיר כ-Nullable.
אזהרה: יכול להיות שהפרויקטים שלכם יהיו יותר מחמירים מבחינת האפשרות שערך יהיה ריק (nullability) כשמשתמשים ב-Kotlin CodeGen. ב-Kotlin CodeGen, המאפיין המציין אם ערך יכול להיות ריק (nullability) של ארגומנטים מסוג type חשוב, בעוד שב-Java המערכת מתעלמת ממנו ברוב המקרים. לדוגמה, נניח שיש לכם סוג החזרה `Flow<foo\>` והטבלה ריקה. ב-Java CodeGen, זה לא יגרום לבעיות, אבל ב-Kotlin CodeGen, תופיע שגיאה. כדי להימנע מכך, תצטרכו להשתמש ב-`Flow<foo?\>`, בהנחה שערך null מוחזר. </foo?\></foo\>
שינויים ב-API
- הגנה מפני שימוש חסר משמעות באוספים שניתנים לערך Null בסוגי ההחזרה של שיטות DAO. (I777dc, b/253271782, b/259426907)
- הוספה של API ליצירת Flow שפולט שינויים ב-Tracker של ביטול התוקף. ה-API שימושי ליצירת זרמים שצריכים להגיב לשינויים במסד הנתונים. (I8c790, b/252899305)
תיקוני באגים
- לא מאפשרים מאפיינים מופשטים בתור DAO getters או שאילתות DAO ב-Kotlin codegen, במקום זאת צריך לשכתב אותם כפונקציות כדי למנוע את התפיסה השגויה שלפיה ערך המאפיין הוא קבוע ויש לו תוצאה קבועה שמאוחסנת. (If6a13, b/127483380, b/257967987)
גרסה 2.5.2
גרסה 2.5.2
21 ביוני 2023
androidx.room:room-*:2.5.2 מופץ. גרסה 2.5.2 מכילה את השמירות האלה.
תיקוני באגים
- תיקון בעיית חוסר תאימות עם kotlinx-metadata-jvm. (386d5c)
- תוקנה בעיה שגרמה לכך ש-Room הציגה שגיאה כשנעשה בה שימוש בבדיקת Robolectric. (f79bea, b/274924903)
גרסה 2.5.1
גרסה 2.5.1
22 במרץ 2023
androidx.room:room-*:2.5.1 מופץ. גרסה 2.5.1 מכילה את השמירות האלה.
תיקוני באגים
- אם מסד הנתונים כבר פתוח, לא כדאי לסמן את תיבת הסימון של ספריית האב של מסד הנתונים ב-
FrameworkSQLiteHelper. (5de86b8) - משתמשים בסימן
isOpenInternalכדי לבדוק אם מסד הנתונים כבר פתוח. (e91fb35) - עכשיו יש טיפול טוב יותר במקרה של כניסה חוזרת ב-
acquireTransactionThread()שלRoom. (219f98b). במהלך השהיית טרנזקציה, Room משתמשת בשרשור מתוך מפעיל הטרנזקציות, מתחילה לולאת אירועים בשרשור ושולחת אליו פעולות השהיה של מסד הנתונים, כך שכולן נכללות בתוך קורוטינת הטרנזקציה. בדרך כלל, השרשור של העסקה שונה מהשרשור שמתחיל את העסקה, אבל במקרים מסוימים הם זהים. כדי לטפל במקרים כאלה של כניסה חוזרת, בוצע רפקטורינג ב-withTransaction()כך שהוא לא מסתמך יותר על משימת בקרה, ובמקום זאת הוא יבצע את בלוק העסקאות של ההשעיה מתוךrunBlockingבשרשור העסקאות.
גרסה 2.5.0
גרסה 2.5.0
22 בפברואר 2023
הגרסאות androidx.room:room-paging-guava:2.5.0, androidx.room:room-paging-rxjava2:2.5.0 וגם androidx.room:room-paging-rxjava3:2.5.0 יוצאות. גרסה 2.5.0 מכילה את השמירות האלה.
גרסה 2.5.0
11 בינואר 2023
androidx.room:room-*:2.5.0 מופץ. גרסה 2.5.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.4.0
- כל המקורות של
room-runtimeהומרו מ-Java ל-Kotlin. שימו לב שאם הקוד שלכם הוא ב-Kotlin, יכול להיות שתיתקלו בבעיות של חוסר תאימות למקור בגלל ההמרה של הספרייה ל-Kotlin. לדוגמה, שינוי ידוע שגורם לאי-תאימות הוא שבגרסהInvalidationTrackerצריך להצהיר עלonInvalidate()ב-Observerכדי לקבל פרמטר מסוגSetולאMutableSet. בנוסף, שיטות מסוימות של getter הומרו למאפיינים שנדרש בהם תחביר גישה למאפיינים בקובצי Kotlin. אם יש בעיות משמעותיות של חוסר תאימות, אפשר לשלוח דוח על באג. - נוספה הערה חדשה של קיצור דרך,
@Upsert, שמנסה להוסיף ישות אם אין התנגשות ייחודיות או לעדכן את הישות אם יש התנגשות. (I7aaab, b/241964353) - נוספו פריטים חדשים להזמנת חדרים
room-paging-rxjava2,room-paging-rxjava3ו-room-paging-guavaלתמיכה בהזמנת חדרים. - נוספו ממשקי API לאספקת שמות של טבלאות מפתח וערך לצורך הסרת דו-משמעות ב-
@MapInfo(Icc4b5)
גרסה 2.5.0-rc01
7 בדצמבר 2022
androidx.room:room-*:2.5.0-rc01 מופץ. גרסה 2.5.0-rc01 מכילה את השמירות האלה.
- הגרסה הזו זהה לגרסה
2.5.0-beta02.
גרסה 2.5.0-beta02
9 בנובמבר 2022
androidx.room:room-*:2.5.0-beta02 מופץ. גרסה 2.5.0-beta02 מכילה את השמירות האלה.
שינויים ב-API
- תיקנו ממשקי API שונים שמקבלים ארגומנטים של שאילתות מאינווריאנט (
Array<Any?>) לקונטרווריאנט (Array<out Any?>) כדי להתאים להתנהגות המערך של Java. (b/253531073)
גרסה 2.5.0-beta01
5 באוקטובר 2022
androidx.room:room-*:2.5.0-beta01 מופץ. גרסה 2.5.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- הגבלת הגרסה המינימלית שתומכת ב-
@Upsertל-API 16. הסיבה לכך היא שלא ניתן לזהות התנגשות של אילוץ מפתח ראשי בממשקי API ישנים יותר. (I5f67f, b/243039555)
תיקוני באגים
- תוקנה בעיה שבה טבלאות צל נשלחו בטעות לקובצי הסכימה
.json, מה שגרם להשחתה שלהם. (I4f83b, b/246751839)
גרסה 2.5.0-alpha03
24 באוגוסט 2022
androidx.room:room-*:2.5.0-alpha03 מופץ. גרסה 2.5.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- נוספה הערה חדשה של קיצור דרך,
@Upsert, שמנסה להוסיף ישות אם אין התנגשות ייחודיות או לעדכן את הישות אם יש התנגשות. (I7aaab, b/241964353)
תיקוני באגים
- Room יציג עכשיו
SQLiteConstraintExceptionבמקוםIllegalStateExceptionבמהלך בדיקה של אילוץ מפתח זר בהעברה אוטומטית. (I328dd) - תיקון שינוי לא תואם במקור Kotlin עבור getter / מאפיינים של
getOpenHelper, getQueryExecutorו-getTransactionExecutor. (Iad0ac)
גרסה 2.5.0-alpha02
1 ביוני 2022
androidx.room:room-*:2.5.0-alpha02 מופץ. גרסה 2.5.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- נוספו פריטי מידע חדשים
room-pagingroom-paging-rxjava2,room-paging-rxjava3ו-room-paging-guavaלתמיכה בהחלפת דפים בחדר.(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203666906)
שינויים ב-API
- כל הקוד של
room-runtimeהומר מ-Java ל-Kotlin. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/206859668)הערה: יכול להיות שתיתקלו בבעיות של חוסר תאימות למקור בגלל ההמרה של הספרייה ל-Kotlin. אם הקוד שלכם היה ב-Kotlin והוא קרא לגרסה הישנה של Room, הגרסה החדשה תצטרך לטפל במקרים האלה. לדוגמה, שינוי ידוע שגורם לאי-תאימות הוא שבגרסה
InvalidationTrackerצריך להצהיר עלonInvalidate()ב-Observerכדי לקבל פרמטר מסוגSetולאMutableSet. - נוספו ממשקי API לאספקת שמות של טבלאות מפתח וערך לצורך הסרת דו-משמעות ב-
@MapInfo(Icc4b5) - כדי לאפשר שוב את
@Ignoreבשיטות get של מאפיינים, צריך לפתור בעיה בתאימות של מקור. (Ifc2fb)
תיקוני באגים
- אלגוריתם היוריסטי לפתרון בעיות של עמודות כפולות. מעכשיו, Room ינסה לפתור עמודות לא חד-משמעיות בשאילתת multimap. כך אפשר לבצע JOIN עם טבלאות שמכילות טבלאות עם אותו שם ולמפות אותן בצורה נכונה לאובייקט של נתוני תוצאות. (I4b444, b/201306012, b/212279118)
גרסה 2.5.0-alpha01
23 בפברואר 2022
androidx.room:room-*:2.5.0-alpha01 מופץ. גרסה 2.5.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- תוקנה בעיה שבה השימוש ב-Room
@IntDefלא נאכף במקורות Kotlin. (I75f41, b/217951311) - תוקנה בעיית תאימות למקור כדי לאפשר שוב שימוש ב-
@Queryבשיטות getter של נכסים. (I0a09b) - המרנו את room-common מ-Java ל-Kotlin. (I69c48, b/206858235)
הערה: יכול להיות שתיתקלו בבעיות של חוסר תאימות למקור, כי חלק מהמאפיינים הועברו לאובייקטים נלווים במהלך ההמרה של הספרייה ל-Kotlin. אם הקוד שלכם היה ב-Kotlin והוא קרא לגרסה הישנה של Room, בגרסה החדשה תצטרכו להוסיף את הסיומת .Companion כשאתם ניגשים למאפיינים האלה.
- המרנו את room-migration מ-Java ל-Kotlin. (I2724b, b/206858622)
- הומר קובץ אחד (
paging) שקשור ל-room-runtimeמ-Java ל-Kotlin. (I82fc8, b/206859668) - נוסף API לנעילה ולשימוש מרובי תהליכים ברמה FrameworkSQLite*, כדי להגן על יצירה והעברות של מסד נתונים בפעם הראשונה בתהליכים מרובים. (Ied267, b/193182592)
תיקוני באגים
- הוספנו תמיכה בנכסים פנימיים במקורות של Kotlin.
זהו שינוי קל בהתנהגות של Room, שבו נעשה שימוש בשם המקור של הפונקציות בזמן ההתאמה שלהן למאפיינים בתור getters/setters (בעבר נעשה שימוש בשם ה-JVM של הפונקציה, ששונה עבור פונקציות/מאפיינים פנימיים).
אם אתם משתמשים בהערות מותאמות אישית
@JvmNameכדי להתאים בין פונקציות getter/setter לבין מאפיינים פרטיים, כדאי לבדוק שוב את הקוד שנוצר אחרי העדכון (If6531, b/205289020)
גרסה 2.4.3
גרסה 2.4.3
27 ביולי 2022
androidx.room:room-*:2.4.3 מופץ. גרסה 2.4.3 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לכך ש-Room לא זיהה פונקציות השהיה ב-Kotlin 1.7 (b/236612358)
גרסה 2.4.2
גרסה 2.4.2
23 בפברואר 2022
androidx.room:room-*:2.4.2 מופץ. גרסה 2.4.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שקשורה ליצירת קוד לפונקציית השעיה של Dao
@Transactionעם גוף שיוצר שיטת ממשק שמוגדרת כברירת מחדל בגלל קומפילציה עם-Xjvm-default=allאו עם קומפילציה שוות ערך. (Ia4ce5) - פתרון באג שבו Room יוצר קוד לשיטת שאילתה מסוג החזרה
Array<ByteArray>. (If086e, b/213789489)
גרסה 2.4.1
גרסה 2.4.1
12 בינואר 2022
androidx.room:room-*:2.4.1 מופץ. גרסה 2.4.1 מכילה את השמירות האלה.
תיקוני באגים
- הוספנו תמיכה בנכסים פנימיים במקורות של Kotlin.
זהו שינוי קל בהתנהגות של Room, שבו נעשה שימוש בשם המקור של הפונקציות בזמן ההתאמה שלהן למאפיינים בתור getters/setters (בעבר נעשה שימוש בשם ה-JVM של הפונקציה, ששונה עבור פונקציות/מאפיינים פנימיים).
אם אתם משתמשים בהערות מותאמות אישית
@JvmNameכדי להתאים בין פונקציות getter/setter לבין מאפיינים פרטיים, כדאי לבדוק שוב את הקוד שנוצר אחרי העדכון (If6531, b/205289020)
גרסה 2.4.0
גרסה 2.4.0
15 בדצמבר 2021
androidx.room:room-*:2.4.0 מופץ. גרסה 2.4.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.3.0
- העברות אוטומטיות: ב-Room יש עכשיו API ליצירת העברות באופן אוטומטי, בתנאי שמייצאים סכימות. כדי להודיע ל-Room ליצור העברה אוטומטית, אפשר להשתמש בנכס חדש
@Database#autoMigrationsכדי להצהיר על הגרסאות שמהן יתבצע מעבר אוטומטי ועל הגרסאות שאליהן יתבצע מעבר אוטומטי. כש-Room צריך מידע נוסף לגבי טבלאות ושינוי שמות של עמודות או מחיקה שלהן, אפשר להשתמש בהערה@AutoMigrationכדי להצהיר על מחלקת מפרט שמכילה את הקלט הזה. פרטים נוספים מופיעים ב@AutoMigrationמאמרי העזרה. - הזרקת תלות בהעברות אוטומטיות:
@ProvidedAutoMigrationSpecהוא API חדש להצהרה ש-AutoMigrationSpecיסופק בזמן הריצה באמצעותRoomDatabase.Builder#addAutoMigrationSpec(). כך אפשר להשתמש במסגרת הזרקת תלות כדי לספק מפרטים כאלה כשיש תלויות מורכבות. - תמיכה בכלי Migration Test Helper להעברות אוטומטיות: בוצע עדכון ב-Room
MigrationTestHelperכדי לתמוך בהעברות אוטומטיות. במסגרת העדכון נוסף API חדש של בנאי שמקבל את מחלקת מסד הנתונים שנבדקת. כך, כלי העזרה יכול להוסיף אוטומטית מעברים אוטומטיים באותו אופן במהלךrunMigrationsAndValidate. - תמיכה בהחלפת דפים ב-Room: הגרסה
androidx.room:room-pagingיצאה עם תמיכה מובנית ב-Paging 3.0 לשאילתות Room שמחזירותandroidx.paging.PagingSource. - שיטות לשאילתות יחסיות: Room תומכת עכשיו בשיטות
@Daoמסוג multimap, שימושיות להצהרות JOIN. סוגי המפות המרובות הנתמכים הםMap, SparseArray, LongSparseArray, וגםImmutableMap, ImmutableSetMultimapו-ImmutableListMultimapשל Guava.
גרסה 2.4.0-rc01
1 בדצמבר 2021
androidx.room:room-*:2.4.0-rc01 מופץ. גרסה 2.4.0-rc01 מכילה את השמירות האלה.
תכונות חדשות
- כדי לתמוך ב-Kotlin 1.6, צריך לעדכן את התלות של Room ב-KSP ל-
1.6.0-1.0.1
גרסה 2.4.0-beta02
17 בנובמבר 2021
androidx.room:room-*:2.4.0-beta02 מופץ. גרסה 2.4.0-beta02 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו תמיכה ב-SparseArray וב-LongSparseArray ב-@MapInfo. (Ic91a2b/138910317)
תיקוני באגים
- הוספנו כלי ניתוח חדש מסוג TypeConverter שמתחשב במידע על האפשרות של ערך null בסוגים. המידע הזה זמין רק ב-KSP, ולכן הוא מופעל כברירת מחדל רק ב-KSP. אם זה גורם לבעיות, אפשר להשבית את האפשרות על ידי העברת room.useNullAwareTypeAnalysis=false למעבד ההערות. במקרה כזה, צריך לדווח על באג כי הדגל הזה יוסר בעתיד. בעזרת הכלי החדש לניתוח TypeConverter, מומלץ לספק רק TypeConverter מקבל שאינו null, כי לכלי הניתוח החדש יש אפשרות לעטוף אותם בבדיקת null. הערה: אין לכך השפעה על משתמשים ב-KAPT או ב-Java, כי מעבדי ההערות (בניגוד ל-KSP) לא כוללים מידע על אפשרות קבלת ערך null בסוגים. (Ia88f9, b/193437407)
- תיקון באג שגורם לכך שהקומפילציה של Room נכשלת עם שגיאת SQL כשמצהירים על ישות FTS לשימוש ב-tokenizer של ICU. (I00db9, b/201753224)
- נפתרה בעיה בהעברות אוטומטיות שקשורה לעמודה חדשה שנוספה לישות מוטמעת בין גרסאות. (I5fcb1b/193798291)
- פתרנו בעיה שקשורה לסוגי ההחזרה של שיטת השאילתה הרלציונית בשאילתות LEFT JOIN. בעקבות השינויים האלה, במקרה שבו יש מיפוי של 1-לרבים, האוסף שמוחזר עבור מפתח לא יכלול את אובייקט הערך הלא תקין אם הוא לא נמצא בסמן. אם לא נמצאים ערכים תקינים, מפתח ימופה לאוסף ריק. (Id5552b/201946438)
- נפתרה בעיית ההעברה האוטומטית שבה מילות מפתח של SQLite לא הוסרו משמות העמודות. (Idbed4b/197133152)
גרסה 2.4.0-beta01
13 באוקטובר 2021
androidx.room:room-*:2.4.0-beta01 מופץ. גרסה 2.4.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה העברות אוטומטיות לא הוסיפו עמודות חדשות כשבטבלה אחרת באותה העברה אוטומטית הייתה גם עמודה חדשה עם אותו שם. (Ia5db5, b/200818663)
- ההטמעה של PagingSource שנוצרה על ידי room-paging משתמשת עכשיו ב-
queryExecutorשעובר דרךRoomDatabase.Builder, כך שאפשר לבטל אותה, במקוםDispatchers.IOשהיה קודם. (Iae259)
גרסה 2.4.0-alpha05
29 בספטמבר 2021
androidx.room:room-*:2.4.0-alpha05 מופץ. גרסה 2.4.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו ממיר מובנה של סוגים ל-UUID. (I671e8, b/73132006)
שינויים ב-API
הוספנו מאפיין חדש להערה TypeConverters כדי לאפשר למפתחים להשבית המרות מובנות של Enum ו-UUID. כברירת מחדל, ההמרות האלה מופעלות, אבל אפשר להשבית אותן בהיקף מסוים או בכל מסד הנתונים. פרטים נוספים זמינים במאמר בנושא TypeConverters. (36ae9e, b/195413406)
תמיכה במפתחות או בערכים שאינם POJO עבור סוגי החזרה של Multimap ב-DAO באמצעות ההערה
@MapInfo. (I4d704)
הפונקציה @MapInfo נדרשת כשעמודת המפתח או הערך של המיפוי מגיעות מעמודה אחת. לדוגמה:
@MapInfo(valueColumn = "songCount")
@Query("""
SELECT *, COUNT(mSongId) as songCount
FROM Artist JOIN Song ON Artist.artistName = Song.artist
GROUP BY artistName
""")
fun getArtistAndSongCounts(): Map<Artist, Integer>
- כשמשתמשים ב-Paging3 עם Room, צריך להגדיר את
room-pagingכארטיפקט חובה. (Ieaffe)
תיקוני באגים
- תוקנה בעיה שבה תוצאות של שאילתות multimap לא סודרו בצורה נכונה כשהשאילתה הכילה פסוקית ORDER BY של עמודה מהמפתח של המפה. (I6b887)
חישוב צריכת הנתונים
- נוסף API חדש לציון סדר האינדקס ב- @Index. תודה לניקיטה ז'לונקין. (I033fc)
גרסה 2.4.0-alpha04
21 ביולי 2021
androidx.room:room-*:2.4.0-alpha04 מופץ. גרסה 2.4.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
Room תומך עכשיו בשיטות
@Daoמסוג multimap, שימושיות להצהרות JOIN. סוגי המיפויים מרובי הערכים הנתמכים הםMap, וגםImmutableMap,ImmutableSetMultimapו-ImmutableListMultimapשל Guava.דוגמאות לשאילתות של מפות מרובות:
מפת קשרים של אחד לאחד
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>מפת קשרים מסוג 'אחד לרבים' (מפה רגילה מרובת-שכבות)
@Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId") fun getArtistAndAlbums(): Map<Artist, List<Album>>אפשר גם לעטוף את התוצאה של המפה המרובה בסוגי ההחזרה האסינכרוניים הנתמכים, כמו
LiveData,Observableשל Rx או קורוטינותFlow.
הודעה לכל החדר
androidx.room:room-pagingיצאה לאור, עם תמיכה מקומית ב-Paging 3.0 לשאילתות Room שמחזירותandroidx.paging.PagingSource.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }הארטיפקט הזה מחליף את ההטמעה של
androidx.paging.PagingSourceשנוצרה על ידי Room בהטמעה שמבוססת על Paging 3.0 APIs. ההטמעה החדשה של PagingSource מנתחת מפתחות בצורה שונה, ולכן כל מפתח שמועבר באופן ידני ל-PagingSource של Room צריך להתאים לשינוי הזה בהתנהגות, כולל initialKey שמועבר דרך הבונה של Pager. הדפים יתחילו להיטען מ-Key, כאשרKeyהוא הפריט הראשון שנטען. ההתנהגות הזו שונה מההתנהגות הקיימת, שבהLoadParams.Refresh.Keyנחשב למיקום הגלילה של המשתמש ופריטים נטענים לפני ואחרי המקש.הארטיפקט הוא אופציונלי, ואם לא משתמשים בו, המערכת תחזור לתמיכה הקיימת ב-Paging 3.0 שהוצגה ב-Room 2.3. עם זאת, בגרסה עתידית, הארטיפקט הזה יהפוך לחובה למי שמשתמש ב-Room עם Paging 3.0. כדי להצטרף, מוסיפים את ארטיפקט ה-paging החדש של Room ל-classpath. אם אתם משתמשים ב-Gradle, אתם יכולים להוסיף את קטע הקוד הבא לקובץ build.gradle:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
תיקוני באגים
- תיקון בעיה בהעברות אוטומטיות שקשורה לטיפול בהפרות של מפתח זר. (b/190113935)
גרסה 2.4.0-alpha03
16 ביוני 2021
androidx.room:room-*:2.4.0-alpha03 מופץ. גרסה 2.4.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- כדי לתמוך בהעברות אוטומטיות, צריך לעדכן את Room
MigrationTestHelperעל ידי מתן API חדש של בנאי שמקבל את מחלקת מסד הנתונים שנבדקת. כך כלי העזרה יכול להוסיף אוטומטית מעברים אוטומטיים באותו אופן במהלךrunMigrationsAndValidate.
תיקוני באגים
תוקנה בעיה בספריית Native של SQLite של Room כדי לתמוך בשבבי M1 של Apple. (b/174695268
תוקנה הבעיה שבה Room לא הציגה שגיאה כשסוג ההחזרה של פונקציית @Transaction היה Flow (I56ddd, b/190075899)
תוקנה בעיה בהעברות אוטומטיות שקשורה לאינדקסים. b/177673291
עדכונים של תלות
- התמיכה ב-KSP ב-Room תלויה עכשיו ב-KSP
1.5.10-1.0.0-beta01. (1ecb11, b/160322705)
גרסה 2.4.0-alpha02
5 במאי 2021
androidx.room:room-*:2.4.0-alpha02 מופץ. גרסה 2.4.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
-
@ProvidedAutoMigrationSpecהוא API חדש להצהרה ש-AutoMigrationSpecיסופק בזמן ריצה באמצעותRoomDatabase.Builder#addAutoMigrationSpec(). כך אפשר להשתמש במסגרת הזרקת תלות כדי לספק מפרטים כאלה כשיש תלויות מורכבות.
תיקוני באגים
- תוקנה בעיה בהעברות אוטומטיות שבה
@DatabaseViews לא נוצרו מחדש בצורה תקינה.
חישוב צריכת הנתונים
- תוקנה בעיה ב-
JournalMode.TRUNCATEשל Room שבה הקריאה החוזרתInvalidationTrackerהופעלה לפעמים בצורה לא תקינה, מאוחר מדי או בכלל לא. תודה ל-Uli Bubenheimer | bubenheimer@users.noreply.github.com(b/154040286)
גרסה 2.4.0-alpha01
21 באפריל 2021
androidx.room:room-*:2.4.0-alpha01 מופץ. גרסה 2.4.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- העברות אוטומטיות: ב-Room יש עכשיו API ליצירת העברות באופן אוטומטי, בתנאי שמייצאים סכימות. כדי להודיע ל-Room ליצור העברה אוטומטית, אפשר להשתמש בנכס חדש
@Database#autoMigrationsכדי להצהיר על הגרסאות שמהן יתבצע מעבר אוטומטי ועל הגרסאות שאליהן יתבצע מעבר אוטומטי. כש-Room צריך מידע נוסף לגבי טבלאות ושינוי שמות של עמודות או מחיקה שלהן, אפשר להשתמש בהערה@AutoMigrationכדי להצהיר על מחלקת מפרט שמכילה את הקלט הזה. פרטים נוספים מופיעים במאמר בנושא@AutoMigration.
תיקוני באגים
- תוקנה בעיה שבה
defaultValueעם סוגריים נוספים אומתו באופן שגוי על ידי אימות הסכימה של Room. b/182284899
גרסה 2.3.0
גרסה 2.3.0
21 באפריל 2021
androidx.room:room-*:2.3.0 מופץ. גרסה 2.3.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.2.0
- תמיכה מובנית ב-Enum: אם לא מסופק ממיר, החדר ישתמש עכשיו כברירת מחדל בממיר מסוג Enum ל-String ולהפך. אם כבר קיים ממיר סוגים ל-enum, Room ייתן עדיפות לשימוש בו על פני ברירת המחדל.
- Query Callback: Room מציעה עכשיו API כללי של קריאה חוזרת, RoomDatabase.QueryCallback, למקרים שבהם שאילתות עומדות להתבצע. ה-API הזה יכול להיות שימושי לרישום ביומנים בגרסאות של ניפוי באגים. אפשר להגדיר את הקריאה החוזרת דרך
RoomDatabase.Builder#setQueryCallback(). - שיפור מוכן מראש: ל-Room יש עכשיו ממשקי API ליצירת מסד נתונים באמצעות קריאה של מסד נתונים מוכן מראש ממקור נתונים. כך אפשר לטפל במקרים כמו מצב שבו מסד הנתונים שלפני האריזה הוא בפורמט gzip.
- המרות סוגים שסופקו: ל-Room יש עכשיו ממשקי API לאספקת מופעים של המרות סוגים, כך שהאפליקציה יכולה לשלוט בהפעלה שלהם. כדי לסמן ממיר סוגים שיועבר ל-Room, משתמשים באנוטציה החדשה @ProvidedTypeConverter.
- תמיכה ב-RxJava3: מעכשיו Room תומך בסוגים של RxJava3. בדומה ל-RxJava2, אפשר להצהיר על שיטות DAO שסוג ההחזרה שלהן הוא Flowable, Single, Maybe ו-Completable. בנוסף, יש ארטיפקט חדש
androidx.room:room-rxjava3לתמיכה ב-RxJava3. - תמיכה ב-Paging 3.0: מעכשיו, Room תתמוך ביצירת הטמעות לשיטות עם ההערה
@Queryשסוג ההחזרה שלהן הואandroidx.paging.PagingSource.
גרסה 2.3.0-rc01
24 במרץ 2021
androidx.room:room-*:2.3.0-rc01 מופץ. גרסה 2.3.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שמנעה את השימוש בשאילתות של Coroutine Flow שנוצרו על ידי Room בבלוק
withTransactionשל השעיה. (I797bf)
גרסה 2.3.0-beta03
10 במרץ 2021
androidx.room:room-*:2.3.0-beta03 מופץ. גרסה 2.3.0-beta03 מכילה את השמירות האלה.
תכונות חדשות
- נוספה תמיכה בהידור מצטבר ל-KSP. (I031c1, b/176453350)
תיקוני באגים
- תוקן באג שבו יצירת PagingSource ב-thread הראשי עלולה להפעיל ANR. (I42b74, b/181221318)
- תוקנה בעיה שבה החשיפה של
@ExperimentalRoomApiהייתה פרטית במקום ציבורית. (b/181356119)
חישוב צריכת הנתונים
- Room יכול לקבל סוג החזרה של POJO בשיטת DAO עם ההערה
@Query, אם היא גם כוללת את ההערה@SkipQueryVerification. Room ינסה כמיטב יכולתו להמיר את תוצאת השאילתה לסוג ההחזרה POJO, באותו אופן שבו זה נעשה עבור שיטת DAO עם הערה@RawQuery. תודה ל-Markus Riegel | hey@marcorei.com. (I45acb)
גרסה 2.3.0-beta02
18 בפברואר 2021
androidx.room:room-*:2.3.0-beta02 מופץ. גרסה 2.3.0-beta02 מכילה את השמירות האלה.
תכונות חדשות
ל-Room יש עכשיו תמיכה ניסיונית ב-Kotlin Symbol Processing KSP.
KSP הוא תחליף ל-KAPT שמאפשר להריץ מעבדי הערות באופן מקורי בקומפיילר של Kotlin, וכך לקצר משמעותית את זמני הבנייה.
כדי להשתמש ב-Room עם KSP, אפשר להחיל את פלאגין KSP Gradle ולהחליף את ההגדרה
kaptבקובץ ה-build ב-ksp. לדוגמה, במקוםkapt 'androidx.room:room-compiler:2.3.0-beta02'צריך להשתמש ב-ksp 'androidx.room:room-compiler:2.3.0-beta02'. פרטים נוספים זמינים במסמכי התיעוד של KSP.שימו לב: מכיוון ש-KSP הוא ניסיוני, מומלץ להמשיך להשתמש ב-KAPT לקוד ייצור. הפחתת זמני הבנייה רלוונטית רק אם אין מעבדים אחרים שמשתמשים ב-KAPT. בעיות מוכרות מפורטות בכתובת b/160322705.
גרסה 2.3.0-beta01
27 בינואר 2021
androidx.room:room-*:2.3.0-beta01 מופץ. גרסה 2.3.0-beta01 מכילה את השמירות האלה.
תכונות חדשות
- סגירה אוטומטית של מסדי נתונים: מעכשיו אפשר לסגור ב-Room מסדי נתונים שלא הייתה אליהם גישה אחרי פרק זמן מסוים. זו תכונה ניסיונית שאפשר להפעיל באמצעות קריאה ל-
RoomDatabase.Builder#setAutoCloseTimeout(). התכונה הזו שימושית לאפליקציות עם כמה מסדי נתונים.
תיקוני באגים
- תוקנה בעיה שבה שיטות Dao עם כמה שיטות
@Updateאו@Deleteעם אסטרטגיות שונות לפתרון קונפליקטים יצרו קוד עם רק אחת מהאסטרטגיות, והתעלמו מהאסטרטגיה שהוגדרה. (/I0b90d, b/176138543)
גרסה 2.3.0-alpha04
16 בדצמבר 2020
androidx.room:room-*:2.3.0-alpha04 מופץ. גרסה 2.3.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- ספריית Room כוללת עכשיו API כללי של קריאה חוזרת
RoomDatabase.QueryCallback, שמופעל כששאילתות עומדות להתבצע. ה-API הזה יכול להיות שימושי לרישום ביומן בגרסאות ניפוי באגים. אפשר להגדיר את הקריאה החוזרת דרךRoomDatabase.Builder#setQueryCallback(). (Iaa513, b/174478034, b/74877608) - אם לא מסופק ממיר, חדר ברירת המחדל ישתמש עכשיו בממיר מסוג Enum ל-String ולהפך. אם כבר קיים ממיר סוגים ל-enum, Room ייתן עדיפות לשימוש בו על פני ברירת המחדל. (b/73132006)
בעיה ידועה
- אם כבר קיים ממיר מסוג חד-כיווני לקריאה של Enum, יכול להיות ש-Room ישתמש בטעות בממיר המובנה String to Enum, וזה לא רצוי. זו בעיה מוכרת, ואפשר לפתור אותה על ידי הפיכת הממיר לממיר דו-כיווני. פרטים נוספים מופיעים בכתובת b/175707691
תיקוני באגים
- תוקנה בעיה שבה Room השבית באופן שגוי את העיבוד של הערות מצטברות בגרסאות חדשות יותר של JDK. (b/171387388)
- תוקנה בעיה שגרמה לכך ש-Room לא מצאה את הכיתה שנוצרה כשנעשה שימוש בכמה טועני כיתות. תודה על התיקון 'Serendipity | 892449346@qq.com'! (b/170141113)
- תוקנה הבעיה שבה Room יצר קוד שגוי כש-Kotlin
@Daoכלל מחלקת בסיס שהגנריקה שלה היא פרימיטיבים ב-JVM. (b/160258066)
חישוב צריכת הנתונים
- Room ישתמש עכשיו ב-
beginTransactionNonExclusiveכברירת מחדל אם מצב WAL מופעל וה-API הוא 16 ומעלה. תודה ל'אחמד א'. Khalil | ahmedibrahimkhali@gmail.com’! (b/126258791)
גרסה 2.3.0-alpha03
14 באוקטובר 2020
androidx.room:room-*:2.3.0-alpha03 מופץ. גרסה 2.3.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
ל-Room יש עכשיו ממשקי API לאספקת מופעים של ממירים מסוגים שונים, כך שהאפליקציה יכולה לשלוט באתחול שלהם. כדי לסמן ממיר סוגים שיועבר ל-Room, משתמשים באנוטציה החדשה
@ProvidedTypeConverter. תודה ל-mzgreen yairobbe@gmail.com. (Ie4fa5, b/121067210)ל-Room יש עכשיו ממשקי API ליצירת מסד נתונים באמצעות קריאה של מסד נתונים ארוז מראש מזרם קלט. כך אפשר לטפל במקרים כמו מצב שבו מסד הנתונים שלפני האריזה הוא בפורמט gzip. תודה ל-Ahmed El-Helw ahmedre@gmail.com (3e6792, b/146911060)
שינויים ב-API
הוספנו יעד חסר להערה
@ForeignKeyכדי למנוע את השימוש בה מחוץ להערה@Entity. (Iced1e)השדה
mCallbacksבטבלהRoomDatabase.javaמוסתר עכשיו. (d576cb, b/76109329)
תיקוני באגים
עדכון של מסמכי התיעוד בנושא TypeConverters כדי להבהיר שאפשר להשתמש ב-TypeConverters רק כדי להמיר עמודות או שדות ולא שורות. (I07c56, b/77307836)
בוצע עדכון ב-DaoProcessor כדי לתקן שגיאת קומפיילר ב-Dao עם סוג סופר גנרי עם 'פרימיטיבים' של Kotlin. (Ice6bb, b/160258066)
עדכון התיעוד של השיטות להוספה או להסרה של משקיפים כדי להבהיר את נושא השרשור (Ifd1d9, b/153948821)
תוקנה בעיה שבה Room לא אימת בצורה נכונה טבלאות FTS שהוגדרה בהן עמודת rowid. (d62ebc, b/145858914)
פריטי תוכן שהוספתם
תיקון בעיות של אותיות רישיות וקטנות בלוקאל שקשורות לטורקית (5746e3), b/68159494
כדי למנוע בעיות ב-Android Lollipop (d1cfc7, b/162431855), צריך להחליף את
ConcurrentHashMapבתוךRoomDatabaseב-Collections.synchronizedMap().מוסיפים קריאה חוזרת (callback) מסוג onOpenPrepackagedDatabase למקרה שמועתקת מסד נתונים מוכן מראש. (I1ba74, b/148934423)
גרסה 2.3.0-alpha02
22 ביולי 2020
androidx.room:room-*:2.3.0-alpha02 מופץ. גרסה 2.3.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- תמיכה ב-RxJava3: מעכשיו Room תומך בסוגים של RxJava3. בדומה ל-RxJava2, אפשר להצהיר על שיטות DAO שסוג ההחזרה שלהן הוא Flowable, Single, Maybe ו-Completable. בנוסף, יש ארטיפקט חדש
androidx.room:room-rxjava3לתמיכה ב-RxJava3. (b/152427884)
שינויים ב-API
- יש עכשיו תמיכה בהצהרה על
@TypeConverterבמחלקת אובייקט ב-Kotlin. (b/151110764) Roomהאפשרות לעיבוד מצטבר של הערות מופעלת עכשיו כברירת מחדל. (b/112110217)
גרסה 2.3.0-alpha01
10 ביוני 2020
androidx.room:room-*:2.3.0-alpha01 מופץ. גרסה 2.3.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
תמיכה ב-Paging 3.0: מעכשיו, Room תתמוך ביצירת הטמעות לשיטות עם הערות
@Queryשסוג ההחזרה שלהן הואandroidx.paging.PagingSource.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
שינויים ב-API
-
@RewriteQueriesToDropUnusedColumnsהיא הערה חדשה ונוחה שגורמת ל-Room לשכתב את ההטלה '*' בשאילתה כך שעמודות שלא נעשה בהן שימוש בתוצאה יוסרו. - הוצאנו משימוש את אפשרות המעבד
room.expandProjection. אפשר להשתמש ב-@RewriteQueriesToDropUnusedColumnsבמקום בשאילתות לאופטימיזציה של חדרים עם הקרנות כוכבים. שימו לב:@RewriteQueriesToDropUnusedColumnsלא מחליף את הפתרון לבעיות שקשורות לעמודותroom.expandProjectionשמוצע לגבי סוגי החזרה שמכילים שדות@Embedded.
תיקוני באגים
- תוקן באג שגרם לכך ש-Room לא זיהה נכון את גרסת ה-JDK ששימשה להפעלת מעבד ההערות המצטבר. תודה ל-Blaz Solar (me@blaz.solar) (b/155215201)
- Room מטמיע עכשיו את התלות ב-ANTLR עם מעבד ההערות כדי למנוע התנגשויות גרסאות עם מעבדים אחרים שגם משתמשים ב-ANTLR. (b/150106190)
גרסה 2.2.6
גרסה 2.2.6
16 בדצמבר 2020
androidx.room:room-*:2.2.6 מופץ. גרסה 2.2.6 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה Room השבית באופן שגוי את העיבוד המצטבר של הערות בגרסאות חדשות יותר של JDK. (b/171387388)
גרסה 2.2.5
גרסה 2.2.5
18 במרץ 2020
androidx.room:room-*:2.2.5 מופץ. גרסה 2.2.5 מכילה את השמירות האלה.
תיקוני באגים
- הגדרת
MultiInstanceInvalidationServiceכ-directBootAware. תודה ל-Mygod contact-git@mygod.be (b/148240967) - תוקן באג שגרם לקריסה כשביטול תוקף של כמה מופעים במקביל הופעל ומסד הנתונים הכיל ישות FTS. (b/148969394)
- תוקנה בעיה בטעינה של ספריות Native של SQLite במעבד אנוטציות (Annotation processor) של Room, שגרמה לקריסת הקומפיילר בגלל קומפילציות מקבילות. (b/146217083)
גרסה 2.2.4
גרסה 2.2.4
19 בפברואר 2020
androidx.room:room-common:2.2.4, androidx.room:room-compiler:2.2.4, androidx.room:room-guava:2.2.4, androidx.room:room-ktx:2.2.4, androidx.room:room-migration:2.2.4, androidx.room:room-runtime:2.2.4, androidx.room:room-rxjava2:2.2.4 ו-androidx.room:room-testing:2.2.4 יוצאים לאור. גרסה 2.2.4 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בהשעיית עסקאות שגרמה לקיפאון אם הקורוטינה בוטלה במהירות לפני שהעסקה התחילה בפועל. (b/148181325)
- תוקנה בעיה שגרמה לשימוש שגוי ב-@Generated כשמבצעים build באמצעות JDK 9. (b/146538330)
- תוקנה הבעיה שבה Room יצר קוד שגוי כשממשק DAO ב-Kotlin כלל פונקציה קונקרטית. (b/146825845)
גרסה 2.2.3
גרסה 2.2.3
18 בדצמבר 2019
androidx.room:room-*:2.2.3 מופץ. גרסה 2.2.3 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה באג שגרם לכך ש-Room לא הצליח לאמת מסד נתונים שלא עבר העברה והכיל גיבוב מדור קודם עם אינדקסים בסכימה שלו. (b/139306173)
גרסה 2.2.2
גרסה 2.2.2
20 בנובמבר 2019
androidx.room:room-*:2.2.2 מופץ. גרסה 2.2.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג שבו איסוף של קשר אחד לאחד עם יותר מ-999 שורות גרם ל-Room להחזיר פריטים קשורים מסוג null. (b/143105450)
גרסה 2.2.1
גרסה 2.2.1
23 באוקטובר 2019
androidx.room:room-*:2.2.1 מופץ. גרסה 2.2.1 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג שבו Room הציג אזהרה שגויה לגבי
CURSOR_MISMATCHכשהאפשרות של הקומפיילרexpandProjectionהופעלה. (b/140759491) - הוספנו מנגנון לניסיון חוזר לטיפול בספרייה המקורית החסרה שמשמשת לאימות שאילתות בזמן ההידור.
גרסה 2.2.0
גרסה 2.2.0
9 באוקטובר 2019
androidx.room:room-*:2.2.0 מופץ. גרסה 2.2.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.1.0
- מסד נתונים מוכן מראש: שני ממשקי API חדשים ב-
RoomDatabase.Builderזמינים עכשיו ליצירתRoomDatabaseעל סמך קובץ מסד נתונים שכבר אוכלס. המאפייןcreateFromAsset()מיועד למקרים שבהם קובץ מסד הנתונים שאוכלס מראש נמצא בתיקיית הנכסים של קובץ ה-APK, והמאפייןcreateFromFile()מיועד למקרים שבהם הקובץ נמצא במיקום שרירותי. השימוש ב-API האלה משנה את ההתנהגות של העברות הרסניות, כך שבמהלך העברה חלופית, Room ינסה להעתיק מחדש את מסד הנתונים שאוכלס מראש אם הוא זמין, אחרת הוא יחזור למצב של מחיקה ויצירה מחדש של כל הטבלאות. b/62185732 - ערכי ברירת מחדל של סכימה: ל-
@ColumnInfoיש עכשיו מאפיין חדשdefaultValueשאפשר להשתמש בו כדי לציין את ערך ברירת המחדל של עמודה. ערכי ברירת מחדל הם חלק מסכימת מסד נתונים, והמערכת תאמת אותם במהלך העברות אם הם צוינו. b/64088772 - קשרים מסוג רבים לרבים: ל-
@Relationיש עכשיו מאפיין חדש,associateBy, שמקבל הערה חדשה,@Junction, שמשמשת להצהרה על קשר שצריך להתקיים באמצעות טבלת צומת (junction table) (שנקראת גם טבלת איחוד). b/69201917 - יחסי גומלין מסוג אחד לאחד: הוסרה ההגבלה בשדות POJO עם ההערה
@Relationלהיות מסוגListאוSet, וכעת אפשר לייצג יחסי גומלין עם ערך יחיד. b/62905145 - ישות היעד: להערות ה-DAO
@Insert,@Updateו-@Deleteיש עכשיו מאפיין חדשtargetEntity, שמאפשר לציין את טבלת היעד שהשיטה של ה-DAO אמורה לפעול עליה. כך אפשר להגדיר את הפרמטרים של שיטות ה-DAO האלה כ-POJO שרירותי, שיפורש כישויות חלקיות. בפועל, זה מאפשר הוספות, מחיקות ועדכונים חלקיים. b/127549506 - Coroutines Flow:
@Queryשיטות DAO יכולות עכשיו להיות מסוג ההחזרהFlow<T>. ה-Flow שמוחזר ישדר מחדש קבוצה חדשה של ערכים אם הטבלאות שנצפות בשאילתה יבוטלו. הצהרה על פונקציית DAO עם סוג החזרהChannel<T>היא שגיאה. במקום זאת, מומלץ להשתמש ב-Room ב-Flowואז להשתמש בפונקציות הסמוכות כדי להמיר אתFlowל-Channel. b/130428884 - Gradle Incremental Annotation Processor: Room הוא עכשיו Gradle isolating
annotation processor ואפשר להפעיל את האפשרות incrementability דרך האפשרות
room.incrementalשל המעבד. מידע נוסף זמין במאמר בנושא אפשרויות של Room Compiler. אם נתקלתם בבעיות, אתם יכולים לדווח על באג כאן. אנחנו מתכננים להפעיל את התכונה 'הגדלה מצטברת' כברירת מחדל בגרסה יציבה עתידית. b/112110217 - הרחבת ההשלכות: נוספה אפשרות חדשה למהדר ניסיוני,
room.expandProjection, שגורמת ל-Room לשכתב שאילתה עם השלכה של כוכב כך שתכיל רק את העמודות ב-POJO מסוג ההחזרה. לדוגמה, עבור שיטת DAO עם@Query("SELECT * FROM Song")שמחזירה POJO בשםSongIdAndTitleעם שני שדות בלבד. לאחר מכן, Room ישכתב את השאילתה ל-SELECT id, title FROM Songכך שיישלף הסט המינימלי של העמודות כדי לעמוד בדרישות של סוג ההחזרה. הפעולה הזו למעשה מבטלת את האזהרהCURSOR_MISMATCHשמוצגת כשהשאילתה מחזירה עמודות נוספות שלא תואמות לשום שדה בסוג ה-POJO שמוחזר.
גרסה 2.2.0-rc01
5 בספטמבר 2019
androidx.room:room:2.2.0-rc01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
לא בוצעו שינויים ציבוריים מאז חדר 2.2.0-beta01.
גרסה 2.2.0-beta01
22 באוגוסט 2019
androidx.room:room-*:2.2.0-beta01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
- תוקנה באג שגרם לכך ששאילתת Coroutine Flow הפסיקה לשדר מחדש ערכים חדשים אחרי זמן מסוים. (b/139175786)
- תוקן באג שגרם לכך ש-Room לא קיבל קוד hash של סכימה מדור קודם בזמן פתיחת מסד נתונים שלא עבר העברה מאז Room 1.0, מה שגרם לקריסת זמן ריצה בגלל סכימה לא תקינה. (b/139306173)
גרסה 2.2.0-alpha02
7 באוגוסט 2019
androidx.room:room-*:2.2.0-alpha02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- Coroutines Flow:
@Queryעכשיו אפשר להגדיר את השיטות של DAO כסוג ההחזרהFlow<T>. ה-Flow שמוחזר ישדר מחדש קבוצה חדשה של ערכים אם הטבלאות שמוגדרות כטבלאות למעקב בשאילתה יאבדו את התוקף שלהן. הצהרה על פונקציית DAO עם סוג החזרהChannel<T>היא שגיאה. במקום זאת, מומלץ להשתמש ב-Room ב-Flowואז להשתמש בפונקציות הסמוכות כדי להמיר אתFlowל-Channel. b/130428884 - הרחבת ההשלכות: נוספה אפשרות חדשה למהדר הניסיוני
room.expandProjectionשגורמת ל-Room לשכתב שאילתה עם השלכה של כוכב כך שתכיל רק את העמודות ב-POJO מסוג ההחזרה. לדוגמה, עבור שיטת DAO עם@Query("SELECT * FROM Song")שמחזירה POJO בשםSongIdAndTitleעם שני שדות בלבד. לאחר מכן, Room ישכתב את השאילתה ל-SELECT id, title FROM Songכך שיישלף הסט המינימלי של העמודות כדי לספק את סוג ההחזרה. הפעולה הזו למעשה מבטלת את האזהרהCURSOR_MISMATCHשמוצגת כשהשאילתה מחזירה עמודות נוספות שלא תואמות לשום שדה בסוג ה-POJO שמוחזר. -
onDestructiveMigrateהוא callback API חדש שנוסף ל-RoomDatabase.Callbackלמקרים שבהם Room מעביר מסד נתונים באופן הרסני. b/79962330
תיקוני באגים
- תוקן באג שבו Room יצר קוד שגוי באמצעות שיטה כ-setter של שדה, כשהשדה מוגן. b/136194628
- תוקן באג שגרם ל-InvalidationTracker להקפיץ הודעת שגיאה (throw) מסוג NPE בתהליך שני כשביטול תוקף של כמה מופעים במקביל הופעל ושירות ביטול התוקף הופסק. b/137454915
- תוקן באג שבו Room לא זיהה נכון את סוג ההחזרה של פונקציית השעיה שעברה בירושה וסומנה באמצעות
@RawQuery. b/137878827 - הקוד שנוצר עבור
@Relationעודכן כשהמפתח הקשור הוא מסוג BLOB, כדי להשתמש ב-ByteBufferשדומה לו. b/137881998 - תוקנה באג שגרם ל-Room להתלונן על חוסר בשיטות setter ב-POJO שמשמשות כפרמטרים חלקיים של ישויות ב-
@Insert,@Updateו-@Delete. b/138664463 - תוקן באג שבו Room התלונן על חוסר ב-getters וב-setters עבור עמודה שהמערכת התעלמה ממנה באמצעות
@Entityכשנעשה שימוש במחלקת הישות בשיטות מסוימות של DAO. b/138238182 - תוקן באג שבו Room לא המיר בצורה נכונה ארגומנטים של קשירה עם שם לארגומנטים מיקומיים, מה שגרם לחריגה בזמן הריצה כשמבצעים שאילתה עם פרמטרים שנעשה בהם שימוש חוזר. b/137254857
גרסה 2.2.0-alpha01
10 ביולי 2019
תכונות חדשות
- מסד נתונים מוכן מראש: שני ממשקי API חדשים ב-
RoomDatabase.Builderזמינים עכשיו ליצירתRoomDatabaseעל סמך קובץ מסד נתונים שכבר אוכלס. המאפייןcreateFromAsset()מיועד למקרים שבהם קובץ מסד הנתונים שאוכלס מראש נמצא בתיקיית הנכסים של קובץ ה-APK, והמאפייןcreateFromFile()מיועד למקרים שבהם הקובץ נמצא במיקום שרירותי. השימוש ב-API האלה משנה את ההתנהגות של העברות הרסניות, כך שבמהלך העברה חלופית, Room ינסה להעתיק מחדש את מסד הנתונים שאוכלס מראש אם הוא זמין, אחרת הוא יחזור למצב של מחיקה ויצירה מחדש של כל הטבלאות.b/62185732 - ערכי ברירת מחדל של סכימה: ל-
@ColumnInfoיש עכשיו מאפיין חדשdefaultValueשאפשר להשתמש בו כדי לציין את ערך ברירת המחדל של עמודה. ערכי ברירת מחדל הם חלק מסכימת מסד נתונים, והמערכת תאמת אותם במהלך העברות אם הם צוינו. b/64088772הערה: אם בסכימת מסד הנתונים כבר יש ערכי ברירת מחדל, כמו אלה שנוספו באמצעות
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z, ואתם מחליטים להגדיר ערכי ברירת מחדל באמצעות@ColumnInfoלאותן עמודות, יכול להיות שתצטרכו לספק העברה כדי לאמת את ערכי ברירת המחדל שלא נכללו. מידע נוסף זמין במאמר בנושא העברת חדרים. - קשרים מסוג רבים לרבים: ל-
@Relationיש עכשיו מאפיין חדש,associateBy, שמקבל הערה חדשה,@Junction, שמשמשת להצהרה על קשר שצריך להתקיים באמצעות טבלת צומת (junction table) (שנקראת גם טבלת איחוד). b/69201917 - קשרים מסוג אחד לאחד: ההגבלה בשדות POJO עם ההערה
@Relationלהיות מסוגListאוSetהוסרה, וכעת אפשר לייצג קשרים עם ערך יחיד. b/62905145 - ישות היעד: להערות ה-DAO
@Insert,@Updateו-@Deleteיש עכשיו מאפיין חדשtargetEntity, שמאפשר לציין את טבלת היעד שהשיטה של ה-DAO אמורה לפעול עליה. כך אפשר להגדיר את הפרמטרים של שיטות ה-DAO האלה כ-POJO שרירותי, שיפורש כישויות חלקיות. בפועל, זה מאפשר הוספות, מחיקות ועדכונים חלקיים. b/127549506 - Gradle Incremental Annotation Processor: Room הוא עכשיו Gradle isolating
annotation processor ואפשר להפעיל את האפשרות incrementability דרך האפשרות
room.incrementalשל המעבד. מידע נוסף זמין במאמר בנושא אפשרויות של Room Compiler. אם נתקלתם בבעיות, אתם יכולים לדווח על באג כאן. אנחנו מתכננים להפעיל את התכונה 'הגדלה מצטברת' כברירת מחדל בגרסה יציבה עתידית. b/112110217
תיקוני באגים
- Room לא יעביר יותר את
EmptySetResultExceptionל-global error handler אם ה-Rx stream של שאילתה נסגר לפני שהשאילתה הושלמה. b/130257475 - תוקן באג שבו ב-Room הוצגה הודעת שגיאה שגויה כשפונקציית DAO של השעיה
שסומנה ב-
@RawQueryלא כללה סוג החזרה. b/134303897 - החדר כבר לא ייצור מתאמי DAO עם סוגים גולמיים. b/135747255
גרסה 2.1.0
גרסה 2.1.0
13 ביוני 2019
גרסה Room 2.1.0 הושקה ללא שינויים מגרסה 2.1.0-rc01. כאן אפשר לראות את הקומיטים שנכללים בגרסה.
שינויים חשובים מאז גרסה 2.0.0
- FTS: Room תומך עכשיו בישויות עם מיפוי לטבלת FTS3 או FTS4. אפשר להוסיף הערות לכיתות עם
@Entityגם עם@Fts3או@Fts4כדי להצהיר על כיתה עם טבלת מיפוי לחיפוש טקסט מלא. אפשר להשתמש בשיטות של ההערה כדי להתאים אישית את ה-FTS. - תצוגות: מעכשיו אפשר להגדיר מחלקה ב-Room כשאילתה מאוחסנת, שנקראת גם תצוגה, באמצעות ההערה
@DatabaseView. - קורוטינות: עכשיו אפשר להשתמש ב-DAO methods כפונקציות השעיה. כדי להשתמש בפונקציונליות הזו, צריך לכלול את
room-ktxבהגדרות התלות. ארטיפקט ה-ktx מספק גם את פונקציית ההרחבהRoomDatabase.withTransactionלביצוע טרנזקציות במסד נתונים בתוך קורוטינה. - ערך אוטומטי: ספריית Room תומכת עכשיו בהצהרה על מחלקות עם ההערה AutoValue כישויות וכ-POJO. עכשיו אפשר להצהיר על ההערות של Room
@PrimaryKey,@ColumnInfo, @Embeddedו-@Relationבשיטות מופשטות של מחלקה עם הערה של autoValue. חשוב לזכור שההערות האלה צריכות להיות מלוות ב@CopyAnnotationsכדי ש-Room יבין אותן בצורה נכונה. - תמיכה נוספת באסינכרוני: שיטות DAO עם הערות
@Insert,@Deleteאו@Update, יחד עם@Queryשמכיל הצהרותINSERT,DELETEאוUPDATE, תומכות עכשיו בסוגי החזרה של RxCompletable,Single,Maybe, ובסוג ההחזרה של GuavaListenableFuture. הן יכולות להיות גם פונקציות השהיה. -
enableMultiInstanceInvalidationהוא API חדש ב-RoomDatabase.Builderשמאפשר לבטל תוקף במספר מופעים של RoomDatabase באמצעות אותו קובץ מסד נתונים. -
fallbackToDestructiveMigrationOnDowngradeהוא API חדש ב-RoomDatabase.Builderשמאפשר ליצור מחדש את מסד הנתונים באופן אוטומטי אם מתבצעת הורדה של גרסה קודמת. -
ignoredColumnsהוא API חדש בהערת ה-@Entityשאפשר להשתמש בו כדי להציג רשימה של שדות שהמערכת התעלמה מהם לפי שם. - Room ישתמש עכשיו בצורה תקינה בבונה הראשי של Kotlin במחלקות נתונים, ולא יהיה צורך להצהיר על המאפיינים כ-
vars.
גרסה 2.1.0-rc01
29 במאי 2019
תיקוני באגים
- תוקנה שגיאת אתחול של חדר שיכולה להתרחש בגלל הגדרה שכבר בוצעה של temp_store. b/132602198
- תוקנה אזהרה לגבי שימוש במירכאות כפולות למשתמשים ב-SQLite מגרסה 3.27.0 ואילך. b/131712640
- תוקן באג שבו InvalidationTracker גרם לקריסה כשכמה בדיקות ביטול תוקף התרחשו במקביל. b/133457594
גרסה 2.1.0-beta01
7 במאי 2019
androidx.room 2.1.0-beta01 יוצאת ללא שינויים לעומת גרסה 2.1.0-alpha07. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
גרסה 2.1.0-alpha07
25 באפריל 2019
API / שינויים בהתנהגות
- פונקציית ההרחבה
RoomDatabase.withTransactionהשתנתה וכבר לא מקבלת בלוק פונקציה עםCoroutineScopeכמקבל. כך נמנעת דילוג עלcoroutineScope { }wrapper נוסף שנדרש כדי להריץ דברים בבלוק העסקאות במקביל.
תיקוני באגים
- תוקן באג שגרם לכך ש-Room לא הצליח להתאים TypeConverter לפונקציית Kotlin DAO שמכילה פרמטר מסוג Collection. b/122066791
גרסה 2.1.0-alpha06
22 במרץ 2019
API / שינויים בהתנהגות
- שאילתות אסינכרוניות של עסקאות עוברות עכשיו סריאליזציה, כך שספריית Room לא תשתמש ביותר משרשור אחד להרצת עסקאות במסד הנתונים.
הוספנו את
RoomDatabase.Builder.setTransactionExecutor(Executor)כדי לאפשר הגדרה של רכיב ההפעלה שישמש לעסקאות. - הפעולה
RoomDatabase.runInTransaction(Callable)לא תעטוף יותר חריגים מסומנים ב-RuntimeExceptions. b/128623748
תיקוני באגים
- תוקן באג שבו מעקב הביטול היה מפסיק לעקוב אחרי טבלת תוכן אם נוספו משתנים למעקב גם לטבלת התוכן וגם לטבלת תוכן חיצונית של FTS. b/128508917
- עודכן
RoomSQLite grammar כך שיתאים ל-SQLite 3.24.0. b/110883668
גרסה 2.1.0-alpha05
13 במרץ 2019
תכונות חדשות
- הפונקציה
RoomDatabase.withTransactionשל התוסף מאפשרת לבצע טרנזקציות במסד נתונים בתוך קורוטינה בצורה בטוחה. פונקציות של תוספים לחדרים עם תמיכה ב-coroutines זמינות ב-artifactroom-ktx. - שיטות DAO לא מופשטות עם ההערה
@Transactionיכולות להיות עכשיו פונקציות השעיה. b/120241587
API / שינויים בהתנהגות
- שם הארטיפקט
room-coroutinesשונה ל-room-ktxבהתאם לאופן מתן השם לארטיפקטים אחרים של androidx. - הפונקציות
beginTransaction,setTransactionSuccessfulוגםendTransactionב-RoomDatabaseהוצאו משימוש לטובתrunInTransactionופונקציית ההרחבהroom-ktxwithTransaction.
תיקוני באגים
- תוקן באג שגרם להשמטת ארגומנטים של טוקנייזר אם הטוקנייזר שבו נעשה שימוש היה SIMPLE. b/125427014
- תוקן באג שגרם לכך ש-Room לא הצליח לזהות נכון פונקציות השהיה עם פרמטרים שהסוג שלהם היה מחלקה פנימית. b/123767877
- תוקן באג שבו הכנה של שאילתה בשרשור הראשי בוצעה באופן מיידי עבור שיטת
@QueryDAO שנדחתה עם הצהרותINSERT, UPDATEאוDELETE. b/123695593 - תוקנו באגים שונים שבהם Room יצר קוד שגוי עבור פונקציות השהיה מסוימות. b/123466702 ו-b/123457323
- תוקן באג שבו שימוש בשיטות שהוצאו משימוש לא הוסתר בצורה נכונה בקוד שנוצר. b/117602586
- עדכנו את התלות של Room ב-androidx.sqlite לגרסה 1.0.2, שכוללת תיקונים לטיפול נכון במסדי נתונים פגומים. b/124476912
בעיות מוכרות
- Room 2.1.0-alpha05 תלויה בארטיפקט
kotlinx-metadata-jvm, שלא זמין כרגע ב-Maven Central (KT-27991). כדי לפתור את הבעיה, צריך להוסיף אתmaven { url "https://kotlin.bintray.com/kotlinx/" }למאגרי הפרויקטים.
גרסה 2.1.0-alpha04
25 בינואר 2019
תכונות חדשות
- שיטות DAO עם הערות
@Queryשמכילות הצהרותINSERT, UPDATEאוDELETEיכולות עכשיו להחזיר סוגים אסינכרונייםSingle, Mayble, Completableו-ListenableFuture. בנוסף, הן יכולות להיות גם פונקציות השעיה. b/120227284
API / שינויים בהתנהגות
- Room יציג עכשיו שגיאה אם method של DAO שאינו מופשט ומסומן ב-
@Transactionמחזיר סוג אסינכרוני כמוSingle, Mayble, Completable, LiveDataאוListenableFuture. מכיוון שעסקאות מוגבלות לשרשור, אי אפשר כרגע להשתמש ב-Room כדי להתחיל ולסיים עסקה סביב פונקציה שעשויה לבצע שאילתות בשרשורים שונים. b/120109336 -
OnConflictStrategy.FAILו-OnConflictStrategy.ROLLBACK@Deprecatedכי הן לא פועלות כמצופה עם הקישורים הנוכחיים של SQLite ב-Android. b/117266738
תיקוני באגים
- תוקן באג שבו Room לא השתמש נכון ב-TypeConverter של סוג החזרה אם שיטת ה-DAO הייתה פונקציית השהיה. b/122988159
- תוקן באג שבו Room זיהה בטעות פונקציות השעיה שעברו בירושה כפונקציות שלא משעות את הפעולה. b/122902595
- תוקן באג שבו Room יצר קוד שגוי כששדה
@Embeddedהיה בכיתת אב והיה בשימוש בכמה כיתות צאצא. b/121099048 - תוקנה בעיה שגרמה לקיפאון של מסד הנתונים כשמפעילים פונקציות השהיה של DAO בין
beginTransaction()לביןendTransaction(). b/120854786
גרסה 2.1.0-alpha03
4 בדצמבר 2018
שינויים ב-API
- הפונקציה FTS
tokenizerב-@Fts3/@Fts4מקבלת עכשיו מחרוזת במקום Enum. כך אפשר להשתמש בטוקנייזרים מותאמים אישית ב-Room. הגדרות של טוקנייזרים מובנים עדיין מוגדרות ב-FtsOptionsכקבועים מסוג מחרוזת. b/119234881
תכונות חדשות
- קורוטינות: עכשיו אפשר להשתמש ב-DAO methods כפונקציות השעיה. כדי לתמוך בפונקציות השהיה ב-Room, פרסמנו ארטיפקט חדש,
room-coroutines. b/69474692 - השיטות של DAO עם ההערות
@Insert,@Deleteאו@Updateתומכות עכשיו ב-ListenableFutureכסוג החזרה. b/119418331
תיקוני באגים
- תוקן באג שבו Room ניסה בטעות למצוא בנאי עם עמודות במאפיין
ignoredColumnsשל@Entity. b/119830714 - תוקן באג שבו Room לא סימן פרמטרים של שיטת DAO כסופיים בהטמעה שנוצרה. b/118015483
- תוקן באג שגרם לקריסה של מעבד
Roomכשדווחה שגיאה בשאילתה עם סמלים מיוחדים. b/119520136 - תוקן באג שבו Room דחה הטמעות שונות של
Collectionכארגומנטים של ביטויIN. b/119884035 - תוקן באג שגרם לכך ש-LiveData שהוחזר מ-Room עבר איסוף אשפה כשנצפה לנצח, ולכן לא פלט יותר נתונים חדשים. b/74477406
- העדכון של נעילת הסגירה של
RoomDatabaseנועד לצמצם את התחרות על הנעילה. b/117900450
גרסה 2.1.0-alpha02
30 באוקטובר 2018
תכונות חדשות
- הוספנו תמיכה בהפניה ל-
@DatabaseViewב-@Relation. b/117680932
תיקוני באגים
- תוקן באג שבו Room ביצע קלט/פלט בדיסק ב-thread הראשי כשנרשמים למינוי ומבטלים אותו מסוג החזרה של Rx. b/117201279
- תוקן באג שבו Room לא הצליחה למצוא ממיר סוג מתאים לשדה במחלקת ישויות של Kotlin. b/111404868
- תוקן באג שבו Room יצר קוד שגוי להטמעה של ממשק
DAOשמכיל שיטת ברירת מחדל של Kotlin ללא ארגומנטים. b/117527454 - עדכון של
RoomSQLite grammar parser, לתיקון בעיה בביצועים שגורמת לזמני בנייה ארוכים. b/117401230
גרסה 2.1.0-alpha01
8 באוקטובר 2018
תכונות חדשות
- FTS: Room תומך עכשיו בישויות עם מיפוי לטבלת FTS3 או FTS4. אפשר להוסיף הערות לכיתות עם
@Entityגם עם@Fts3או@Fts4כדי להצהיר על כיתה עם טבלת מיפוי לחיפוש טקסט מלא. אפשר להשתמש בשיטות של ההערה כדי להתאים אישית את FTS. b/62356416 - תצוגות: מעכשיו אפשר להגדיר מחלקה ב-Room כשאילתה מאוחסנת, שנקראת גם תצוגה, באמצעות ההערה @DatabaseView. b/67033276
- ערך אוטומטי: מעכשיו אפשר להגדיר ב-Room מחלקות עם הערה AutoValue כסוגי ישויות (entities) ו-POJO. אפשר עכשיו להצהיר על הערות לגבי חדרים
@PrimaryKey,@ColumnInfo,@Embeddedו-@Relationבשיטות מופשטות של מחלקה עם הערה לגבי ערך אוטומטי. חשוב לציין שההערות האלה צריכות להיות מלוות גם ב-@CopyAnnotationsכדי ש-Room יבין אותן בצורה נכונה. b/62408420 - תמיכה נוספת בסוגי החזרה של Rx: שיטות DAO עם ההערות
@Insert,@Deleteאו@Updateתומכות עכשיו בסוגי החזרה של RxCompletable,Single<T>ו-Maybe<T>. b/63317956 - סוגים שלא ניתן לשנות עם
@Relation: בעבר, כדי להגדיר@Relationשדות עם הערות ב-Room היה צריך להגדיר אותם כניתנים להגדרה, אבל עכשיו אפשר להגדיר אותם כפרמטרים של בנאי. -
enableMultiInstanceInvalidation: ממשק API חדש ב-RoomDatabase.Builderשמאפשר לבטל תוקף במספר מופעים של RoomDatabase באמצעות אותו קובץ מסד נתונים. מנגנון הביטול הזה של כמה מופעים פועל גם בכמה תהליכים. b/62334005 -
fallbackToDestructiveMigrationOnDowngrade: API חדש ב-RoomDatabase.Builderשיוצר מחדש את מסד הנתונים באופן אוטומטי אם מתבצעת שדרוג לאחור. b/110416954 -
ignoredColumns: הוא API חדש בהערה@Entityשאפשר להשתמש בו כדי להציג רשימה של שדות שהמערכת מתעלמת מהם לפי שם. המאפיין הזה שימושי להתעלמות משדות שעוברים בירושה בישות. b/63522075
API / שינויים בהתנהגות
- הגרסאות
mCallbackו-mDatabaseב-RoomDatabaseהן עכשיו@Deprecatedוהן יוסרו בגרסה הראשית הבאה של Room. b/76109329
תיקוני באגים
- תוקנו שתי בעיות שבהן Room לא הצליחה להתאושש כראוי ממסד נתונים פגום או מהעברה לא תקינה במהלך האתחול. b/111504749 ו-b/111519144
- Room ישתמש עכשיו בצורה נכונה בבונה הראשי של Kotlin במחלקות נתונים, ולא תצטרכו להצהיר על השדות כ-
vars. b/105769985
גרסה 2.0.0
גרסה 2.0.0
1 באוקטובר 2018
androidx.room 2.0.0 יצא ללא שינויים מגרסה 2.0.0-rc01.
גרסה 2.0.0-rc01
20 בספטמבר 2018
androidx.room 2.0.0-rc01 יוצאת ללא שינויים מגרסה 2.0.0-beta01.
גרסה 2.0.0-beta01
2 ביולי 2018
API / שינויים בהתנהגות
- נוספה האפשרות
RoomDatabase.Builder.setQueryExecutor()כדי לאפשר התאמה אישית של המיקום שבו השאילתות מופעלות - נוספה תמיכה ב-RxJava2
Observable - ההטמעות של DAO ושל מסד הנתונים שנוצרו הן סופיות
תיקוני באגים
- צריך לציין שם של מחלקה או שדה בשגיאה 'לא ניתן למצוא getter לשדה' b/73334503
- תוקנה התאימות לאחור של RoomOpenHelper לגרסאות ישנות יותר של Room b/110197391
תלויות ב-Pre-AndroidX
בגרסאות Room שקדמו ל-AndroidX, צריך לכלול את יחסי התלות הבאים:
dependencies {
def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
// optional - RxJava support for Room
implementation "android.arch.persistence.room:rxjava2:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "android.arch.persistence.room:guava:$room_version"
// Test helpers
testImplementation "android.arch.persistence.room:testing:$room_version"
}
גרסה 1.1.1
גרסה 1.1.1
19 ביוני 2018
החדר 1.1.1 זהה לחדר 1.1.1-rc1.
גרסה 1.1.1-rc1
16 במאי 2018
אם אתם משתמשים בהעברות, מומלץ מאוד להשתמש ב-Room 1.1.1-rc1 במקום ב-1.1.0.
תוקן באג שגרם לכך ש-Room לא טיפל כראוי באתחול אחרי ההעברה b/79362399
גרסה 1.1.0
גרסה 1.1.0-beta3
19 באפריל 2018
תיקוני באגים
- תיקון שגיאת קומפילציה כש-Kotlin POJO מפנה לישות קשר שהוגדרה ב-Java b/78199923
גרסה 1.1.0-beta2
5 באפריל 2018
תיקוני באגים
תוקן באג קריטי בהטמעות של
RoomRxSingleו-Maybe, שגרם למיחזור השאילתה לפני הזמן. הבאג הזה גרם לבעיות אם הוספתם יותר מ-observer אחד למופעים שלSingleאוMaybeשהוחזרו. b/76031240[RoomDatabase.clearAllTables][ref-clearAllTables] לא
VACUUMאת מסד הנתונים אם הקריאה מתבצעת בתוך טרנזקציה. b/77235565
גרסה 1.1.0-beta1
21 במרץ 2018
שינויים ב-API
- על סמך משוב על API Review,
@RawQueryכבר לא מקבל העברה שלStringכפרמטר של שאילתה. צריך להשתמש ב- [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (אפשר לעיין ב[SimpleSQLiteQuery][ref-SimpleSQLiteQuery] כדי ליצור בקלות מופע של [SupportSQLiteQuery][ref-SupportSQLiteQuery] עם תמיכה בארגומנטים). - השיטה [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] של RoomDatabase.Builder מקבלת עכשיו
vararg intבמקוםvararg Integer.
תיקוני באגים
- [RoomDatabase.clearAllTables][ref-clearAllTables] מנסה עכשיו להחזיר את המקום למערכת ההפעלה על ידי הגדרת נקודת ביקורת של WAL ו-
VACUUMשל מסד הנתונים. - [
@RawQuery][ref-RawQuery] מקבל עכשיו כל Pojo עבור המאפייןobservedEntitiesכל עוד ה-Pojo מפנה לישות אחת או יותר דרך השדותEmbeddedאוRelationשלו. b/74041772 - חלוקה לדפים: ההטמעה של DataSource ב-Room מטפלת עכשיו בצורה נכונה בתלות של טבלאות מרובות (כמו יחסים וצירופים). בעבר, הפעולות האלה לא היו מפעילות תוצאות חדשות, או שהן היו נכשלות בהידור. b/74128314
גרסה 1.1.0-alpha1
22 בינואר 2018
תכונות חדשות
-
RawQuery: ה-API החדש הזה מאפשר ל-methods של@Daoלקבל את ה-SQL כפרמטר של שאילתה b/62103290, b/71458963 -
fallBackToDestructiveMigrationsFrom: ה-API החדש הזה ב-RoomDatabase.Builderמאפשר שליטה מדויקת יותר בגרסאות הסכימה הראשוניות שמהן מותרות העברות הרסניות (בהשוואה ל-fallbackToDestructiveMigration) b/64989640 - הגרסה החדשה של Room תומכת רק בממשקי API חדשים יותר של Paging (גרסה אלפא 4 ומעלה), ולא תומכת יותר ב-
LivePagedListProviderשהוצא משימוש. כדי להשתמש בגרסת האלפא החדשה של Room, צריך להשתמש ב-pagingalpha-4ומעלה, ולעבור מ-LivePagedListProviderל-LivePagedListBuilderאם עדיין לא עשיתם את זה.
תיקוני באגים
- שיפור התמיכה בסוגי Kotlin Kapt. b/69164099
- סדר השדות לא פוסל יותר את הסכימה. b/64290754