חדר
העדכון האחרון | גרסה יציבה | מועמד לפרסום | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
21 באוגוסט 2024 | 2.6.1 | - | - | 2.7.0-alpha07 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב- Room, עליכם להוסיף את מאגר Google Maven פרויקט. למאגר Maven של Google אפשר לקבל מידע נוסף.
יחסי תלות של חדר כוללים העברות לחדרי בדיקה וגם חדר RxJava
מוסיפים את יחסי התלות של פריטי המידע הנדרשים בקובץ build.gradle
בשביל
האפליקציה או המודול שלך:
מגניב
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx.room:room-compiler:$room_version" // To use Kotlin Symbol Processing (KSP) ksp "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" }
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) ksp("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") }
מידע על השימוש בפלאגין KAPT זמין במאמרי העזרה של KAPT.
מידע על השימוש בפלאגין KSP זמין במסמכי התיעוד למתחילים של KSP.
מידע על השימוש בתוספי Kotlin זמין במסמכי התיעוד של ktx.
אפשר לקרוא מידע נוסף על יחסי תלות במאמר הוספת יחסי תלות של build.
אופציונלי: בספריות שאינן של Android (כלומר מודולים של Java או Kotlin בלבד של Gradle)
אפשר להסתמך על androidx.room:room-common
כדי להשתמש בהערות לחדר.
הגדרת אפשרויות מהדר
החדר כולל את האפשרויות הבאות של מעבדי הערות.
room.schemaLocation |
directory
מאפשרת ייצוא של סכימות של מסדי נתונים לקובצי JSON למידע נוסף על מעברים בין חדרים אפשר לקבל מידע נוסף. |
room.incremental |
boolean
הפעלת מעבד ההערות המצטברות של Gradle. ערך ברירת מחדל true .
|
room.generateKotlin |
boolean
ליצור קובצי מקור של Kotlin במקום ב-Java. נדרש KSP. ערך ברירת המחדל הוא false .
לפרטים נוספים, ראו גרסה 2.6.0.
|
שימוש בפלאגין Room Gradle
בגרסה 2.6.0 ואילך של Room, אפשר להשתמש בפלאגין Room Gradle כדי להגדיר אפשרויות עבור מהדר החדר. הפלאגין מגדיר את הפרויקט. שיצרה סכימות (שהן פלט של משימות הידור הנצרכות להעברות אוטומטיות) מוגדרות בצורה נכונה כדי שניתן יהיה לשחזר אותן גרסאות build שאפשר לשמור במטמון.
כדי להוסיף את הפלאגין, בקובץ ה-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") } }
כשמשתמשים בפלאגין Room Gradle, צריך להגדיר schemaDirectory
. הזה
יגדיר את מהדר החדר ואת משימות הידור השונות ואת הקצוות העורפיים שלו
(Javac, KAPT, KSP) כדי ליצור פלט של קובצי סכימה לתיקיות לפי טעם, לדוגמה
schemas/flavorOneDebug/com.package.MyDatabase/1.json
הקבצים האלה צריכים להיות
למאגר לצורך אימות והעברות אוטומטיות.
יש אפשרויות שלא ניתן להגדיר בכל הגרסאות של הפלאגין Room Gradle.
למרות שהם נתמכים על ידי מהדר (compiler) חדרים. הטבלה הבאה מפרטת כל אחת מהאפשרויות
אפשרות שמציגה את הגרסה של Room Gradle Plugin שנוספה תמיכה ב-
הגדרת האפשרות הזו באמצעות התוסף room
. אם מספר הגרסה קטן יותר,
אם האפשרות עדיין לא נתמכת, אפשר להשתמש ב
אפשרויות לעיבוד ההערות.
אפשרות | מאז הגרסה |
---|---|
room.schemaLocation (שדה חובה) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
שימוש באפשרויות לשימוש בהערות
אם אתם לא משתמשים בפלאגין Room Gradle, או אם האפשרות הרצויה לא זמינה שנתמך על ידי גרסת הפלאגין שלכם, אפשר להגדיר את 'חדר' באמצעות של מעבדי הערות, כפי שמתואר מוסיפים יחסי תלות של build איך את/ה האפשרויות להוספת הערות תלויות בשאלה אם משתמשים ב-KSP או ב-KAPT לחדר.
מגניב
// 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 יודע על הספרייה הזו כשהוא מבצע בדיקות עדכניות.
העברת מסד הנתונים של החדרים
מציג הטמעה מלאה של CommandLineArgumentsProvider
מיקום הסכימה.
משוב
המשוב שלך עוזר לנו לשפר את Jetpack. נשמח לשמוע אם גילית בעיות חדשות או אם יש לך רעיונות לשיפור הספרייה הזו. מומלץ לעיין בעיות קיימות בספרייה הזו לפני שיוצרים ספר חדש. אפשר להוסיף את ההצבעה שלך לבעיה קיימת על ידי לחיצה על לחצן הכוכב.
מקורות מידע בנושא מעקב אחר בעיות אפשר לקבל מידע נוסף.
גרסה 2.7
גרסה 2.7.0-alpha07
21 באוגוסט 2024
androidx.room:room-*:2.7.0-alpha07
משוחרר. גרסה 2.7.0-alpha07 מכילה את התחייבויות אלה.
תכונות חדשות
- עכשיו, הפלאגין Room Gradle יוסיף באופן אוטומטי את הסכימות המיוצאות למקורות המשאבים של Android Instrumentation Test, כדי שאפשר יהיה להשתמש בהן ב-
MigrationTestHelper
.
תיקוני באגים
- תוקנה בעיה ב'בפועל' שנוצר על ידי
RoomDatabaseConstructor
שחסרה בו התכונה 'בפועל' בפונקציהinitialize
אם הפונקציה הזו בוטלה גם בהצהרה 'צפוי'. (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()
. האסטרטגיה החדשה:
הגדרת אובייקט מצופה שמטמיע את
RoomDatabaseConstructor
expect 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
ב-KMP של חדר, על ידי הוספת API חדש בשםRoomRawQuery
שדומה ל-SupportSQLiteQuery
מבחינת החזקה במחרוזת ה-SQL הגולמית ופונקציה שמקשרת ארגומנטים להצהרה. עכשיו פונקציות עם הערות@RawQuery
יכולות לקבל אתRoomRawQuery
כפרמטר היחיד שלהן. (Iea844, b/330586815) - צריך להוסיף עומס יתר של
setQueryCallback()
שמקבלCoroutineContext
. (Id66ff, b/309996304) - נוספה תמיכה ביעדים של
linuxArm64
Kotlin Multiplatform (I139d3, b/338268719)
תיקוני באגים
- אפשר לפתור בעיה שבה החדר יוצר בטעות שיחה אל
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 מכילה את התחייבויות אלה.
תיקוני באגים
- אם תוקנה בעיה במעבד ההערות של חדר, קוד KMP לא תואם כשהוגדר סוג החזרה של מפות מרובות ב-DAO. (b/340983093)
- תוקנה בעיה שגרמה לכך שחדר הנתונים לא הצליח למצוא את ההטמעה של מסד הנתונים שנוצר אם למחלקה עם הפתקים
@Database
לא הייתה חבילה. (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). יש עדיין הרבה מה לעשות, אבל בגרסה הזו מופיעה גרסה חדשה של 'חדר' שבה רוב הפונקציונליות היא 'נפוצה' (מיועדת לשימוש בפלטפורמות מרובות). הפלטפורמות הנתמכות הנוכחיות הן Android, iOS, JVM (מחשב), Mac ו-Linux מקוריים. כל פונקציונליות שחסרה בפלטפורמות הנתמכות החדשות תועבר ל'השלמת התכונות' בגרסאות הבאות של החדרים.
מידע נוסף על התחלת השימוש בתוכנית KMP של Room מופיע במסמכי התיעוד הרשמיים של KMP בחדר.
- האפשרות Kotlin Code Generation ב-KSP מופעלת כברירת מחדל אם העיבוד מתבצע דרך KSP. בפרויקטים של KAPT או Java בלבד, אפליקציית Room עדיין תיצור מקורות Java.
שינויים ב-API
- נוסף עומס יתר של
Room.databaseBuilder()
, שלוקח פרמטר lambda שמיועד לשימוש עם פונקציה שנוצרה על ידי חדר, כדי למנוע את השימוש בהשתקפות בזמן יצירת הטמעה שלRoomDatabase
שנוצרה. דוגמה לשימוש:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- נוסף ל-builder API להגדרת חדר עם
CoroutineContext
:RoomDatabase.Builder.setQueryCoroutineContext
. הערה: אפשר להגדירRoomDatabase
רק עם מפעילים שמשתמשים ב-setQueryExecutor
או עם הקשר של Coroutine, אבל לא עם שניהם. - נוסף ממשק API להגדרת חדר עם מנהל התקן
SQLite
:RoomDatabase.Builder.setDriver()
. מידע נוסף על Driver API שלSQLite
זמין במסמכי התיעוד של SQLite KMP. - נוספו ממשקי API לגישה אל
SQLiteConnection
מתוך ממשקי ה-API של מנהלי ההתקנים:RoomDatabase.useReaderConnection
ו-RoomDatabase.useWriterConnection
. - בקריאות חוזרות (callback) שקשורים לחדרים ב-Varios Room, יש עכשיו גרסה עמוסה מדי שמקבלת
SQLiteConnection
במקוםSupportSQLiteDatabase
. צריך לשנות את ההגדרות האלה במהלך מעבר לפרויקט KMP. לקבלת מידע נוסף על העברת שימושים בחדרים באפליקציה ל-Android למודול KMP נפוץ, אפשר לעיין במדריך ההעברה. הקריאות החוזרות הן:Migration.migrate(SQLiteConnection)
AutoMigrationSpec.onPostMigrate(SQLiteConnection)
RoomDatabase.Callback.onCreate(SQLiteConnection)
RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
RoomDatabase.Callback.onOpen(SQLiteConnection)
- פריט המידע שנוצר בתהליך הפיתוח (Artifact) של KTX
androidx.room:room-ktx
מוזג ל-androidx.room:room-runtime
עם כל ממשקי ה-API שלו. פריט המידע שנוצר בתהליך הפיתוח (Artifact) ריק עכשיו. צריך להסיר אותו מרשימת התלות.
גרסה 2.6
גרסה 2.6.1
29 בנובמבר 2023
androidx.room:room-*:2.6.1
משוחרר. גרסה 2.6.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- נפתרה בעיה בקוד שנוצר, שבה ערך ברירת המחדל של עמודות כפולות ב-
EntityCursorConverter
היה 0 במקום 0.0. נכלל גם תיקון אפשרי למצב קצה דומה בעמודות מסוג Float. (Id75f5, b/304584179) - חריגות שנפסלו מטעינות של
PagingSource
יופצו עכשיו כ-LoadStateUpdate
מתוךLoadResult.Error
שמכילים את התוכן שאפשר להשליך עליו. ניתן לראות את מצב השגיאה הזה באמצעות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, חשוב לשים לב שנוספו גם הגבלות נוספות. אסור להשתמש במאפיינים מופשטים כמו מקבלי DAO או שאילתות DAO ב-Kotlin CodeGen, ובמקום זאת הם אמורים להיכתב מחדש כפונקציות כדי להימנע מהמושג השקרי שערך הנכס לא ניתן לשינוי ושיש לו תוצאה שמורה קבועה. הגבלה נוספת שנוספה היא שאי אפשר יותר להשתמש בסוגי ההחזרה של Nullable לאיסוף ב- Room ל-Kotlin CodeGen.
אזהרה: כשמשתמשים ב-Kotlin CodeGen, יכול להיות שהפרויקטים מחמירים יותר מבחינת null. ב-Kotlin CodeGen, יכולת ה-null של ארגומנטים מסוג היא חשובה, Wheras ב-Java מתעלמים ממנה בדרך כלל. לדוגמה, נניח שסוג ההחזרה 'Flow<foo\>' והטבלה ריקה. ב-Java CodeGen זה לא יגרום לבעיות, אבל ב-Kotlin CodeGen תתקבל שגיאה. כדי למנוע את זה, צריך להשתמש ב-'Flow<foo?\>', בהנחה שנוצר ערך null. </foo?\></foo\>
- פריט המידע החדש שנוצר בתהליך הפיתוח (Artifact) של פלאגין Room Gradle נוסף לחדר עם המזהה
androidx.room
. הפתרון הזה פותר בעיות קיימות שונות ב'חדר' לגבי קלט ופלט של סכימות דרך אפשרויות של מעבדי הערות Gradle. פרטים נוספים זמינים בנתוני הגרסה של Room גרסה 2.6.0-alpha02. - בשלב הזה, ב-KSP יש תמיכה במחלקות ערכים בישויות של חדרים. (4194095)
- סוגי החזרה של מפות בתוך פונקציות בפונקציות 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
במהלך עלייה שמתרחשת כשהחריגה2067 SQLITE_CONSTRAINT_UNIQUE
מושלכת במהלך עלייה, צריך לבצע עדכון למעלה. (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 עודכנו כך שלא תמיד יידרשו הגדרות לכל וריאנט. המשמעות היא שהפלאגין יכול לקבל מיקום גלובלי לכל הווריאנטים בלי ליצור כמה ספריות, וכך לאפשר העברות חלקות יותר אבל הוא גם גמיש מספיק להגדרה ידנית של טעמים או סכימות של סוגי build, ועדיין לשמור על היתרונות של הפלאגין (גרסאות build ניתנות לשחזור ולשמירה במטמון). (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 עם המזהה androidx.room
, שפותר בעיות קיימות שונות ב- Room שקשורות לקלט ולפלט של סכימות דרך אפשרויות של מעבדי ההערות Gradle. הפלאגין Room Gradle מגדיר את הפרויקט כך שסכימות שנוצרו לצורך העברות אוטומטיות ומהוות פלט של משימות הידור מוגדרות בצורה נכונה לגרסאות build שניתן לשחזר ולשמור במטמון. הפלאגין מציע DSL כדי להגדיר את מיקום הסכימה הבסיסית:
room {
schemaDirectory("$projectDir/schemas/")
}
לאחר מכן, הפלאגין יגדיר את מהדר (compiler) החדר ואת משימות ההידור השונות ואת הקצוות העורפיים שלו (Javac, KAPT, KSP) כדי שיפיק פלט של קובצי סכימה אל תיקיות לפי טעם, למשל schemas/flavorOneDebug/com.package.MyDatabase/1.json
. כמו תמיד, הקבצים האלה עוברים בדיקות למאגר לצורך אימות והעברות אוטומטיות. לאחר המעבר לשימוש בפלאגין במקום באפשרויות מעבד ההערות, קובצי הסכימה הקיימים צריכים להיות מועתקים לספריות הטעם שנוצרו על ידי הפלאגין שנוצרו על ידי הפלאגין, זו פעולת העברה חד-פעמית שחובה לבצע באופן ידני. מסמכי התיעוד של הסכימה בכתובת developers.android.com יעודכנו בעתיד כשהמשוב יטופל והפלאגין יגיע ליציב, אז כדאי לנסות.
שינויים ב-API
RoomDatabase.QueryCallback
הוגדר כממשק פונקציונלי שמאפשר להשתמש בהמרות מסוג SAM. (Iab8ea, b/281008549)
תיקוני באגים
- פתרון בעיה שנוצרה במהלך יצירת מסד נתונים ב-Robolectric לאחר העברת מקורות של חדרים מ-Java ל-Kotlin. (Ic053c, b/274924903)
גרסה 2.6.0-alpha01
22 במרץ 2023
androidx.room:room-*:2.6.0-alpha01
משוחרר. גרסה 2.6.0-alpha01 מכילה את התחייבויות אלה.
תכונות חדשות
- תמיכה במחלקות של ערכים ב- Room עבור KSP. עכשיו חדר יכול לתמוך בסיווגים של ישויות בישויות. (4194095)
- עכשיו אפשר להפעיל את יצירת קוד Kotlin(או "Kotlin CodeGen") ב-'חדר' (4297ec0). כדי להפעיל את Kotlin CodeGen ב- Room, צריך להוסיף את השם של
room.generateKotlin
לאפשרויות המעבדים של KSP. לקבלת פרטים נוספים על העברת אפשרויות מעבד מידע ל-KSP, אפשר לעיין במסמכי התיעוד של KSP.
הערה: כשמשתמשים ב-Kotlin CodeGen, חשוב לשים לב שנוספו גם הגבלות נוספות. אסור להשתמש במאפיינים מופשטים כמו מקבלי DAO או שאילתות DAO ב-Kotlin CodeGen, ובמקום זאת הם אמורים להיכתב מחדש כפונקציות כדי להימנע מהמושג השקרי שערך הנכס לא ניתן לשינוי ושיש לו תוצאה שמורה קבועה. הגבלה נוספת שנוספה היא שאי אפשר יותר להשתמש בסוגי ההחזרה של Nullable לאיסוף ב- Room ל-Kotlin CodeGen.
אזהרה: כשמשתמשים ב-Kotlin CodeGen, יכול להיות שהפרויקטים מחמירים יותר מבחינת null. ב-Kotlin CodeGen, יכולת ה-null של ארגומנטים מסוג היא חשובה, Wheras ב-Java מתעלמים ממנה בדרך כלל. לדוגמה, נניח שסוג ההחזרה 'Flow<foo\>' והטבלה ריקה. ב-Java CodeGen זה לא יגרום לבעיות, אבל ב-Kotlin CodeGen תתקבל שגיאה. כדי למנוע את זה, צריך להשתמש ב-'Flow<foo?\>', בהנחה שנוצר ערך null. </foo?\></foo\>
שינויים ב-API
- הגנה מפני שימוש חסר משמעות באוספים שאינם ניתנים לביטול בסוגי החזרה של שיטת DAO. (I777dc, b/253271782, b/259426907)
- צריך להוסיף ממשק API ליצירת תהליך שפולט שינויים בכלי המעקב אחר ביטול התוקף. ה-API שימושי ליצירת שידורים שצריכים להגיב לשינויים במסד הנתונים. (I8c790, b/252899305)
תיקוני באגים
- אין לאפשר מאפיינים מופשטים כמקבלי DAO או כשאילתות DAO בקודגן של Kotlin, במקום זאת יש לשכתב אותם כפונקציות כדי להימנע מהמושג השקרי שערך המאפיין אינו ניתן לשינוי ויש לו תוצאה שמורה קבועה. (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)
- תיקון בעיה שגורמת לשגיאה ב'חדר' להקפיץ הודעת שגיאה במהלך שימוש בבדיקה 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()
של החדר. (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)
תיקוני באגים
- מעכשיו, החדר יקבל
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-paging
ארטיפקטיםroom-paging-rxjava2
,room-paging-rxjava3
ו-room-paging-guava
חדשים, לצורך חלוקה לדפים של חדרים.(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203
שינויים ב-API
- כל נפח האחסון של
room-runtime
הומרו מ-Java ל-Kotlin. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25/ b/{14הערה: יכול להיות שתיתקלו בבעיות של חוסר תאימות של מקורות בגלל ההמרה של הספרייה ל-Kotlin. אם הקוד היה ב-Kotlin והתקשר לגרסה הישנה של Room, הגרסה החדשה תצטרך לטפל במקרים האלה. לדוגמה, שינוי ידוע שאינו תואם למקור: ב-
InvalidationTracker
תצטרכו עכשיו להצהיר ש-onInvalidate()
ב-Observer
מכיל פרמטר מסוגSet
ולאMutableSet
. - נוספו ממשקי API לציון שמות של טבלאות מפתחות וערכים לצורך הבהרה ב-
@MapInfo
(Icc4b5) - צריך לתקן את בעיית התאימות של המקור כדי לאפשר מחדש את השימוש ב-
@Ignore
בנקודות גישה של נכסים. (Ifc2fb)
תיקוני באגים
- אלגוריתם היוריסטיקה של רזולוציית עמודות כפולה. החדר ינסה עכשיו לפתור עמודות לא חד-משמעיות בשאילתה עם מפות מרובות. כך אפשר למפות שאילתות איחוד (join) עם טבלאות עם שמות זהים לאובייקט נתונים של התוצאה. (I4b444, b/201306012, b/212279118)
גרסה 2.5.0-alpha01
23 בפברואר 2022
androidx.room:room-*:2.5.0-alpha01
משוחרר. גרסה 2.5.0-alpha01 מכילה את התחייבויות אלה.
שינויים ב-API
- תוקנה בעיה שבה לא נאכפו השימוש בחדר
@IntDef
במקורות ב-Kotlin. (I75f41, b/217951311) - תוקנה בעיית תאימות מקור כדי לאפשר מחדש
@Query
במקבלי נכסים. (I0a09b) - חדר שהוסב מג'אווה לקוטלין. (I69c48, b/206858235)
הערה: יכול להיות שיהיו בעיות של חוסר תאימות של מקורות כי חלק מהנכסים הועברו לאובייקטים נלווים במהלך המרת הספרייה ל-Kotlin. אם הקוד היה ב-Kotlin ומבצע קריאה לגרסה הישנה של Room, בגרסה החדשה יהיה צורך בסיומת ' .Companion' הסיומת במהלך הגישה לנכסים האלה.
- מיגרציה של חדרים הומרה מ-Java ל-Kotlin. (I2724b, b/206858622)
paging
קבצים קשורים בroom-runtime
הומרו מ-Java ל-Kotlin. (I82fc8, b/206859668)- נוסף API לנעילה ולשימוש בריבוי תהליכים ברמת FrameworkSQLite*, כדי להגן על יצירה והעברות של מסדי נתונים מרובי תהליכים. (Ied267, b/193182592)
תיקוני באגים
- נוספה תמיכה בנכסים פנימיים במקורות של Kotlin.
זהו שינוי קטן בהתנהגות של 'חדר' שבו ייעשה שימוש במקור
של פונקציות תוך התאמתן למאפיינים כמגדירים/מגדירים
(בעבר השתמשנו בשם JVM של הפונקציה,
לפונקציות/מאפיינים פנימיים).
אם השתמשת בהערות
@JvmName
מותאמות אישית כדי להתאים בין מקבצים/מגדירים לנכסים פרטיים, חשוב לבדוק שוב את הקוד שנוצר אחרי עדכון (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 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תיקון בעיה ביצירת קוד לפונקציית השעיה של
@Transaction
ב-Dao עם גוף שיוצר שיטת ברירת מחדל בממשק, עקב הידור עם-Xjvm-default=all
או הצהרה מקבילה. (Ia4ce5) - תיקון באג שבו חדר יוצר קוד לשיטת שאילתה מסוג
Array<ByteArray>
להחזרה. (If086e, b/213789489)
גרסה 2.4.1
גרסה 2.4.1
12 בינואר, 2022
androidx.room:room-*:2.4.1
משוחרר. גרסה 2.4.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- נוספה תמיכה בנכסים פנימיים במקורות של Kotlin.
זהו שינוי קטן בהתנהגות של 'חדר' שבו ייעשה שימוש במקור
של פונקציות תוך התאמתן למאפיינים כמגדירים/מגדירים
(בעבר השתמשנו בשם JVM של הפונקציה,
לפונקציות/מאפיינים פנימיים).
אם השתמשת בהערות
@JvmName
מותאמות אישית כדי להתאים בין מקבצים/מגדירים לנכסים פרטיים, חשוב לבדוק שוב את הקוד שנוצר אחרי עדכון (If6531, b/205289020)
גרסה 2.4.0
גרסה 2.4.0
15 בדצמבר 2021
androidx.room:room-*:2.4.0
משוחרר. גרסה 2.4.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 2.3.0
- העברות אוטומטיות: ב-חדר יש עכשיו ממשק API ליצירה אוטומטית של העברות, כל עוד מייצאות סכימות. כדי ליידע את החדר, צריך ליצור העברה אוטומטית של נכס חדש
@Database#autoMigrations
, שבעזרתו אפשר להצהיר על הגרסאות להעברה אוטומטית מהנכס ושאליו. במקרים שבהם נדרש מידע נוסף לחדר על טבלאות ושמות של עמודות או עמודות, יש אפשרות להצהיר על רמת מפרט שמכילה את הנתונים האלה בהערה@AutoMigration
. פרטים נוספים זמינים במסמכי התיעוד בנושא@AutoMigration
. - החדרת תלות בהעברות אוטומטיות:
@ProvidedAutoMigrationSpec
הוא API חדש שבו אפשר להצהיר ש-AutoMigrationSpec
יסופק בזמן הריצה דרךRoomDatabase.Builder#addAutoMigrationSpec()
. כך מסגרת של החדרת תלות יכולה לספק מפרטים כאלה כשהם זקוקים ליחסי תלות מורכבים. - תמיכה בכלי לבדיקת ההעברה בהעברה אוטומטית: עדכנו את
MigrationTestHelper
של החדר כדי לתמוך בהעברות אוטומטיות באמצעות constructor API חדש שמקבל בדיקה של המחלקה של מסד הנתונים. כך כלי העזר יכול להוסיף העברות אוטומטיות באותו אופן במהלךrunMigrationsAndValidate
. - תמיכה בהחלפה של חדר:
androidx.room:room-paging
הושקה, כך שתהיה תמיכה מובנית ב-Ping 3.0 לשאילתות של חדרים שחוזרות בתאריךandroidx.paging.PagingSource
. - שיטות שאילתה יחסיות: Room תומך עכשיו בסוגי החזרה מסוג
@Dao
מסוג 'מיפוי מרובה', שימושיות להצהרות איחוד (join). הסוגים הנתמכים של מפות מרובות הםMap
,SparseArray
,LongSparseArray
וגםImmutableMap
,ImmutableSetMultimap
וImmutableListMultimap
של גויאבה.
גרסה 2.4.0-rc01
1 בדצמבר 2021
androidx.room:room-*:2.4.0-rc01
משוחרר. גרסה 2.4.0-rc01 מכילה את ההתחייבויות האלה.
תכונות חדשות
- עדכון התלות של החדר ב-KSP ל-
1.6.0-1.0.1
לתמיכה ב-Kotlin 1.6
גרסה 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, מומלץ לספק רק מקבלים TypeConverters שאינם אפס, כי למנתח החדש יש את היכולת כדי לעטוף אותן עם בדיקת null. חשוב לשים לב שאין לכך השפעה על משתמשים שמשתמשים ב-KAPT או ב-Java למעבדי הערות (בניגוד ל-KSP), אין להם מידע על יכולת null בסוגים. (Ia88f9, b/193437407)
- תיקון באג שבו החדר לא הצליח להדר עם שגיאת SQL כשישות FTS מוצהרת להשתמש בכלי ההמרה לאסימונים של ICU. (I00db9, b/201753224)
- נפתרה בעיה בהעברות אוטומטיות בנוגע לעמודה חדשה שנוספה לישות מוטמעת בין גרסאות. (I5fcb1b/193798291)
- פתרנו בעיה שקשורה לסוגי ההחזרה של שאילתות שקשורות לשאילתות LEFT JOIN. בעקבות השינויים האלה, במקרה של מיפוי של מספר אחד, האוסף שיוחזר עבור מפתח לא יכלול את האובייקט של הערך הלא חוקי אם הוא לא נמצא בסמן. אם לא נמצאו ערכים חוקיים, המפתח ימופה לאוסף ריק. (Id5552b/201946438)
- נפתרה בעיית ההעברה האוטומטית שבה לא ניתן היה לסמן מילות מפתח של SQLite בתווי בריחה (escape) בשמות העמודות. (Idbed4b/197133152)
גרסה 2.4.0-beta01
13 באוקטובר 2021
androidx.room:room-*:2.4.0-beta01
משוחרר. גרסה 2.4.0-beta01 מכילה את התחייבויות אלה.
תיקוני באגים
- תוקנה בעיה בהעברה אוטומטית של עמודות חדשות, כאשר טבלה אחרת באותה העברה אוטומטית כללה עמודה חדשה עם אותו שם. (Ia5db5, b/200818663)
- הטמעת PagingSource שנוצרה עכשיו על ידי חלוקה לדפים של חדרים
משתמש ב
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 ב-DAOs באמצעות ההערה
@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>
- צריך להגדיר את
room-paging
כארטיפקט נדרש כשמשתמשים ב-Paging3 עם Room. (Ieaffe)
תיקוני באגים
- תיקון בעיה שבה התוצאות של שאילתות מסוג 'מיפוי מרובה' לא סדרו כראוי כשהשאילתה הכילה משפט ORDER BY של עמודה מהמפתח של המפה. (I6b887)
תרומה חיצונית
- נוסף API חדש כדי לציין סדר אינדקס ב- @Index. תודה לניקיטה ז'לונקין. (I033fc)
גרסה 2.4.0-alpha04
21 ביולי 2021
androidx.room:room-*:2.4.0-alpha04
משוחרר. גרסה 2.4.0-alpha04 מכילה את התחייבויות אלה.
תכונות חדשות
החדר תומך עכשיו בסוגי החזרה של ריבוי מיפויים
@Dao
בשיטות, שימושיות להצהרות איחוד (join). הסוגים הנתמכים של מפות מרובות הםMap
וגםImmutableMap
,ImmutableSetMultimap
וImmutableListMultimap
של גויאבה.ריכזנו כאן דוגמאות לשאילתות של ריבוי מפות:
מפת יחסים אחד לאחד
@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
ומספקים תמיכה מובנית ב-Ping 3.0 לשאילתות עם התכונה Room שמחזירות אתandroidx.paging.PagingSource
.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }
פריט המידע הזה שנוצר בתהליך הפיתוח (Artifact) מחליף את ההטמעה של
androidx.paging.PagingSource
שנוצרה על ידי Room, בהטמעה שמבוססת על Paging 3.0 APIs. בהטמעת PagingSource החדש מנתחים מפתחות באופן שונה, לכן כל מפתח שיסופק באופן ידני ל-PagingSource של Room צריך להביא בחשבון את השינוי הזה בהתנהגות, כולל ה-InitialKey שהועבר דרך ה-constructor של Pager. דפים יתחילו להיטען מ-Key
כאשרKey
יהיה הפריט הראשון שנטען. המדיניות הזו שונה מההתנהגות הקיימת, שבה המערכת מתייחסת ל-LoadParams.Refresh.Key
כמיקום הגלילה של המשתמש והפריטים נטענים גם לפני המפתח וגם אחריו.פריט המידע שנוצר בתהליך הפיתוח (Artifact) הוא אופציונלי. ביטול ההסכמה יוביל לתמיכה הקיימת בהחלפה של גרסה 3.0 שהושקה בחדר 2.3. עם זאת, פריט המידע הזה שנוצר בתהליך הפיתוח (Artifact) לא יהיה אופציונלי בגרסה עתידית למשתמשים שמשתמשים בחדר עם חלוקה לדפים 3.0. כדי להביע הסכמה, צריך להוסיף לנתיב הכיתה את פריט המידע החדש של חלוקה לדפים. אם אתם משתמשים ב-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
- צריך לעדכן את
MigrationTestHelper
של Room כך שיתמוך בהעברות אוטומטיות באמצעות API חדש של constructor שמקבל את המחלקה של מסד הנתונים בבדיקה. כך כלי העזר יכול להוסיף העברות אוטומטיות באותו אופן במהלךrunMigrationsAndValidate
.
תיקוני באגים
תוקנה בעיה בספריית הנייטיב של SQLite של Room כדי לתמוך בצ'יפים של M1 של Apple. (b/174695268
תוקנה בעיה שגרמה לשגיאה שבה החדר לא הוצג כשסוג ההחזרה של פונקציית @Transaction היה תהליך (I56ddd, b/190075899)
פתרון בעיה בהעברות אוטומטיות בנוגע לאינדקסים. b/177673291
עדכונים בנושא תלות
- התמיכה ב-KSP של החדר תלויה עכשיו ב-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()
. כך מסגרת של החדרת תלות יכולה לספק מפרטים כאלה כשהם זקוקים ליחסי תלות מורכבים.
תיקוני באגים
- תיקון בעיה בהעברות אוטומטיות שבהן פריטי
@DatabaseView
לא נוצרו מחדש באופן תקין.
תרומה חיצונית
- צריך לתקן בעיה במכשיר
JournalMode.TRUNCATE
של החדר, שבה הקריאה החוזרת של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 מכילה את התחייבויות אלה.
תכונות חדשות
- העברות אוטומטיות: ב-חדר יש עכשיו ממשק API ליצירה אוטומטית של העברות, כל עוד מייצאות סכימות. כדי ליידע את החדר, צריך ליצור העברה אוטומטית של נכס חדש
@Database#autoMigrations
, שבעזרתו אפשר להצהיר על הגרסאות להעברה אוטומטית מהנכס ושאליו. במקרים שבהם נדרש מידע נוסף לחדר על טבלאות ושמות של עמודות או עמודות, יש אפשרות להצהיר על רמת מפרט שמכילה את הנתונים האלה בהערה@AutoMigration
. פרטים נוספים זמינים במסמכי התיעוד בנושא@AutoMigration
.
תיקוני באגים
- צריך לתקן בעיה שבה בוצע אימות שגוי של
defaultValue
עם סוגריים נוספים על ידי אימות הסכימה של החדר. b/182284899
גרסה 2.3.0
גרסה 2.3.0
21 באפריל 2021
androidx.room:room-*:2.3.0
משוחרר. גרסה 2.3.0 כוללת את ההתחייבויות האלה.
שינויים חשובים מאז 2.2.0
- תמיכה מובנית ב-Enum: כברירת מחדל, החדר יהיה משתמש בממיר Enum למחרוזת, ולהפך, אם לא תספקו ממירים מסוג כזה. אם כבר קיים ממיר מסוג 'טיפוסים בני מנייה (enum)', הוא ייתן עדיפות לשימוש ב-'חדר' על פני ברירת המחדל.
- שאילתה עם קריאה חוזרת (callback): החדר כולל עכשיו API כללי לקריאה חוזרת (callback) של RoomDatabase.QueryCallback, למקרים שבהם השאילתות אמורות לפעול, והוא יכול להיות שימושי לרישום של גרסאות build של ניפוי באגים. אפשר להגדיר את הקריאה החוזרת דרך
RoomDatabase.Builder#setQueryCallback()
. - שיפור שארוז מראש: ב-חדר יש עכשיו ממשקי API ליצירת מסד נתונים באמצעות מסד נתונים ארוז מראש שנקרא ממקור קלט. כך ניתן לעשות זאת במקרים כמו דחיסת נתונים מסוג gzip למסד הנתונים לפני החבילה.
- ממירי סוגים שסופקו: בחדר יש עכשיו ממשקי API שמאפשרים לספק מופעים של ממירים מסוגים מסוימים, כדי שהאפליקציה תוכל לשלוט באתחול שלהם. כדי לסמן סוג ממיר שיסופק לחדר, משתמשים בהערה החדשה @ProvidedTypeConverter.
- תמיכה ב-RxJava3: החדר תומך עכשיו בסוגי RxJava3. בדומה ל-RxJava2 אפשר להצהיר על שיטות DAO שסוג ההחזרה שלהן הוא Flowable, Single, אולי ו-Comletable. בנוסף, פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש
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 שנוצרו על ידי חדר בבלוק
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)
תרומה חיצונית
- מתן הרשאה לחדר כדי לקבל סוג החזרה של POJO בשיטת DAO עם הערות
@Query
כשיש לה גם הערות עם@SkipQueryVerification
. ייעשה כמיטב יכולתנו כדי להמיר את תוצאת השאילתה לסוג ההחזרה של 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 מכילה את התחייבויות אלה.
תכונות חדשות
החדר כולל עכשיו תמיכה ניסיונית בעיבוד סמלים של Kotlin באמצעות KSP.
KSP הוא תחליף ל-KAPT להרצת מעבדי הערות במקור במהדר של Kotlin, מה שמקצר באופן משמעותי את זמני ה-build.
כדי להשתמש ב- 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 לקוד ייצור. קיצור זמני ה-build חל רק אם אין מעבדים אחרים שמשתמשים ב-KAPT. בעיות ידועות מופיעות בכתובת b/160322705.
גרסה 2.3.0-beta01
27 בינואר, 2021
androidx.room:room-*:2.3.0-beta01
משוחרר. גרסה 2.3.0-beta01 מכילה את התחייבויות אלה.
תכונות חדשות
- מסדי נתונים שניתנים לסגירה אוטומטית: לחדר יש עכשיו אפשרות לסגור מסדי נתונים שלא ניגשים אליהם אחרי פרק זמן נתון. זוהי תכונה ניסיונית ואפשר להפעיל אותה באמצעות קריאה ל-
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 מכילה את התחייבויות אלה.
תכונות חדשות
- חדר כולל עכשיו API כללי לקריאה חוזרת (callback)
RoomDatabase.QueryCallback
, למקרים שבהם שאילתות עומדות לפעול, שיכול להיות שימושי לרישום גרסאות build של ניפוי באגים. אפשר להגדיר את הקריאה החוזרת דרךRoomDatabase.Builder#setQueryCallback()
. (Iaa513, b/174478034, b/74877608) - כברירת מחדל, החדר ישתמש בממיר Enum למחרוזת, ולהפך, אם לא תספקו ממירים מסוג כזה. אם כבר קיים ממיר מסוג 'טיפוסים בני מנייה (enum)', הוא ייתן עדיפות לשימוש ב-'חדר' על פני ברירת המחדל. (b/73132006)
בעיה ידועה
- אם כבר קיים ממיר מסוג חד-כיווני לקריאה עבור ה-Enum, יכול להיות ש- Room ישתמש בטעות במחרוזת המובנית לממיר Enum, וזה לא מה שרציתם. זו בעיה ידועה וניתן לפתור אותה על ידי הגדרת ממיר דו-כיווני. למידע נוסף: b/175707691
תיקוני באגים
- תוקנה בעיה שגרמה להשבתה שגויה של עיבוד הערות מצטבר בגרסאות JDK ב-חדר. (b/171387388)
- תוקנה בעיה באיתור הכיתה שנוצרה כשנעשה שימוש בכמה כיתות טעינה. תודה על התיקון 'Serendipity | 892449346@qq.com’! (b/170141113)
- תוקנה בעיה שבה Room יצר קוד שגוי כשב-
@Dao
Kotlin הייתה מחלקה בסיסית שההגדרות הגנריות שלה הן פרימיטיביות ב-JVM. (b/160258066)
תרומה חיצונית
- כברירת מחדל, המכשיר ישתמש בממשק של
beginTransactionNonExclusive
אם מצב WAL מופעל וגרסת ה-API שלו היא 16 ומעלה. תודה ל-'Ahmed I. חליל | ahmedibrahimkhali@gmail.com’! (b/126258791)
גרסה 2.3.0-alpha03
14 באוקטובר 2020
androidx.room:room-*:2.3.0-alpha03
משוחרר. גרסה 2.3.0-alpha03 מכילה את התחייבויות אלה.
תכונות חדשות
עכשיו יש ב-חדר ממשקי API שמאפשרים לספק מופעים של ממירים מסוגים שונים, כדי שהאפליקציה תוכל לשלוט באתחול שלהם. כדי לסמן סוג ממיר שיסופק לחדר, צריך להשתמש בהערה החדשה
@ProvidedTypeConverter
. תודה לכתובת 'mzgreen yairobbe@gmail.com'. (Ie4fa5, b/121067210)ב-חדר יש עכשיו ממשקי 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)
תיקון בעיה לאימות שגוי של טבלאות FTS שהכריזו על העמודה שלהן בחדר. (d62ebc, b/145858914)
תרומות חיצוניות
פתרון בעיות שקשורות ללוקאל של אותיות רישיות/קטנות שקשורות לטורקית (5746e3), b/68159494
מחליפים את
ConcurrentHashMap
שבתוךRoomDatabase
ב-Collections.synchronizedMap()
כדי למנוע בעיות ב-Android Lollipop (d1cfc7, b/162431855)הוספת קריאה חוזרת (callback) של onOpenPrepackagedDatabase כאשר מתרחשת אריזה מראש מסד הנתונים מועתק. (I1ba74, b/148934423)
גרסה 2.3.0-alpha02
22 ביולי 2020
androidx.room:room-*:2.3.0-alpha02
משוחרר. גרסה 2.3.0-alpha02 מכילה את התחייבויות אלה.
תכונות חדשות
- תמיכה ב-RxJava3: החדר תומך עכשיו בסוגי RxJava3. בדומה ל-RxJava2 אפשר להצהיר על שיטות DAO שסוג ההחזרה שלהן הוא Flowable, Single, אולי ו-Comletable. בנוסף, פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש
androidx.room:room-rxjava3
זמין לתמיכה ב-RxJava3. (b/152427884)
שינויים ב-API
- עכשיו יש תמיכה בהצהרה על
@TypeConverter
במחלקה של Kotlin. (b/151110764) - האפשרות לעיבוד הערות מצטברות בחדר מופעלת עכשיו כברירת מחדל. (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.expandProjection
הוצאה משימוש. השתמשו ב-@RewriteQueriesToDropUnusedColumns
כתחליף לשאילתות אופטימיזציה של חדרים עם הקרנות כוכבים. חשוב לשים לב:@RewriteQueriesToDropUnusedColumns
לא מחליף את פתרון התנגשות העמודותroom.expandProjection
שמוצע בכל הנוגע לסוגי החזרה שמכילים שדות@Embedded
.
תיקוני באגים
- תוקן באג שגרם ל'חדר' לא זיהה נכון את גרסת ה-JDK ששימשה להפעלת מעבד הערות מצטברות. תודה ל-Blaaz Solar (me@blaz.solar) (b/155215201)
- מעכשיו, החדר מטמיע את התלות שלו ב-ANTLR עם מעבד ההערות כדי למנוע התנגשות בין גרסאות עם מעבדים אחרים שמשתמשים גם הם ב-ANTLR. (b/150106190)
גרסה 2.2.6
גרסה 2.2.6
16 בדצמבר 2020
androidx.room:room-*:2.2.6
משוחרר. גרסה 2.2.6 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה להשבתה שגויה של עיבוד הערות מצטבר בגרסאות JDK ב-חדר. (b/171387388)
גרסה 2.2.5
גרסה 2.2.5
18 במרץ 2020
androidx.room:room-*:2.2.5
משוחרר. גרסה 2.2.5 כוללת את ההתחייבויות האלה.
תיקוני באגים
- הגדרת DirectBootAware ל-
MultiInstanceInvalidationService
. תודה ל-Mygod contact-git@mygod.be (b/148240967) - תוקן באג שגרם לקריסה כשביטול התוקף של ריבוי מכונות הופעל, ומסד הנתונים הכיל ישות FTS. (b/148969394)
- תוקנה בעיה בטעינת ספריות נייטיב של SQLite במעבד ההערות של 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 במהלך הפיתוח באמצעות JDK 9. (b/146538330)
- תוקנה בעיה שגרמה להצגת קוד שגוי בממשק DAO ב-Kotlin באמצעות פונקציה קונקרטית. (b/146825845)
גרסה 2.2.3
גרסה 2.2.3
18 בדצמבר 2019
androidx.room:room-*:2.2.3
משוחרר. גרסה 2.2.3 מכילה את ההתחייבויות האלה.
תיקוני באגים
- תוקן באג שכשהחדר לא הצליח לאמת מסד נתונים שלא עבר העברה כלשהי והכיל גיבוב מדור קודם עם אינדקסים בסכימה. (b/139306173)
גרסה 2.2.2
גרסה 2.2.2
20 בנובמבר 2019
androidx.room:room-*:2.2.2
משוחרר. גרסה 2.2.2 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקן באג שבו איסוף של קשר 'אחד לאחד' עם יותר מ-999 שורות יגרום ל'חדר' להחזיר פריטים קשורים null. (b/143105450)
גרסה 2.2.1
גרסה 2.2.1
23 באוקטובר 2019
androidx.room:room-*:2.2.1
משוחרר. גרסה 2.2.1 כוללת את ההתחייבויות האלה.
תיקוני באגים
- תוקן באג שגרם להצגת אזהרה מ'חדר' לגבי
CURSOR_MISMATCH
כשאפשרות המהדר (compiler)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 הזה משנים את ההתנהגות של העברות הרסניות, כך שבמהלך ההעברה החלופית, החדר ינסה כדי להעתיק מחדש את מסד הנתונים המאוכלס מראש, אם הוא זמין, אחרת הוא ישתמש ב- פשוט לשחרר וליצור מחדש את כל הטבלאות. b/62185732 - ערכי ברירת המחדל של הסכימה:
@ColumnInfo
כולל עכשיו מאפיין חדשdefaultValue
שאפשר להשתמש בו כדי לציין את ערך ברירת המחדל של עמודה. ערכי ברירת המחדל הם חלק מסכימת מסד נתונים, ויאומת במהלך ההעברות, אם שצוין. b/64088772 - קשרים רבים לרבים: ל-
@Relation
יש עכשיו נכס חדשassociateBy
, שמקבלת הערה חדשה@Junction
, שמשמשת להצהרה על קשר צריך לספק מענה באמצעות טבלת צמתים (שנקראת גם טבלת איחוד). b/69201917 - יחסים מסוג אחד לאחד: ההגבלה בשדות של POJO עם הערות
@Relation
להיות מסוגList
אוSet
הוסרו, ביעילות שמאפשרת ייצוג של קשרים בעלי ערך יחיד. b/62905145 - ישות יעד: הערות DAO
@Insert
,@Update
ו-@Delete
עכשיו כולל נכס חדשtargetEntity
, שמאפשר לציין את טבלת היעד שיטת DAO נועדה לפעול. כך מתאפשרים הפרמטרים של DAO בתור POJO שרירותי, שיתפרשו כישויות חלקיות. בפועל, הפעולה הזו מאפשרת הכנסה, מחיקות ועדכונים חלקיים. b/127549506 - תהליך הקריסה:
@Query
שיטות DAO יכולות להיות עכשיו מסוג החזרהFlow<T>
. הרצף שמוחזר יפלוט מחדש קבוצת ערכים חדשה אם בטבלאות התצפית בוטלה התוקף של השאילתה. הצהרה על פונקציית DAO עם חזרה שלChannel<T>
הסוג הוא שגיאה, ובמקום זאת מומלץ להשתמש ב-Flow
ולהשתמש ב- פונקציות סמוכות כדי להמיר אתFlow
ל-Channel
. b/130428884 - מעבד הערות מצטברות של Gradle: עכשיו Room הוא מבודד מסוג Gradle
ניתן להפעיל את מעבד ההערות ואת יכולת ההגדלה דרך המעבד
אפשרות
room.incremental
. צפייה האפשרויות של הכלי ליצירת חדר אפשר לקבל מידע נוסף. אם נתקלת בבעיות, אפשר לשלוח איתור באגים כאן. אנחנו מתכננים להפעיל את האפשרות של הגדלה כברירת מחדל בגרסה עתידית ויציבה. b/112110217 - הרחבת תחזיות: אפשרות חדשה ומהדר (compiler) ניסיונית
השדה
room.expandProjection
נוסף, וכתוצאה מכך החדר ישכתב מחדש שאילתה עם היטל כוכב שיכלול רק את העמודות מהטיפוס המוחזר POJO. עבור לדוגמה, ל-method DAO עם@Query("SELECT * FROM Song")
שמחזירה POJO בשםSongIdAndTitle
עם שני שדות בלבד. לאחר מכן החדר ישכתב את שאילתה ל-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)
- תוקן באג שגרם לקריסה בסביבת זמן הריצה בגלל סכימה לא חוקית ב-חדר, שגרם לקריסה בזמן הריצה בגלל סכימה לא חוקית, בזמן פתיחת מסד נתונים שלא עבר העברה של 'חדר' 1.0' מדור קודם. (b/139306173)
גרסה 2.2.0-alpha02
7 באוגוסט 2019
androidx.room:room-*:2.2.0-alpha02
משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.
תכונות חדשות
- תהליך הקריסה:
@Query
שיטות DAO יכולות להיות עכשיו מסוג החזרהFlow<T>
. הרצף שמוחזר יפלוט מחדש קבוצת ערכים חדשה אם בטבלאות התצפית בוטלה התוקף של השאילתה. הצהרה על פונקציית DAO עם חזרה שלChannel<T>
הסוג הוא שגיאה, ובמקום זאת מומלץ להשתמש ב-Flow
ולהשתמש ב- פונקציות סמוכות כדי להמיר אתFlow
ל-Channel
. b/130428884 - הרחבת תחזיות: אפשרות חדשה ומהדר (compiler) ניסיונית
השדה
room.expandProjection
נוסף, וכתוצאה מכך החדר ישכתב מחדש שאילתה עם היטל כוכב שיכלול רק את העמודות מהטיפוס המוחזר POJO. עבור לדוגמה, ל-method DAO עם@Query("SELECT * FROM Song")
שמחזירה POJO בשםSongIdAndTitle
עם שני שדות בלבד. לאחר מכן החדר ישכתב את שאילתה ל-SELECT id, title FROM Song
כך שהקבוצה המינימלית של עמודות כדי לעמוד בסוג ההחזרה המאוחזרים. זה בעצם מבטל את אזהרה אחת (CURSOR_MISMATCH
) שמוצגת כשהשאילתה מחזירה שלא תואמות לאף שדה בסוג ה-POJO החוזר. onDestructiveMigrate
הוא API חדש לקריאה חוזרת (callback) שנוסף ל-RoomDatabase.Callback
למצב שבו Room מעביר באופן הרסני מסד נתונים. b/79962330
תיקוני באגים
- תוקן באג שגרם ל- Room ליצור קוד שגוי באמצעות method כשדה כשהשדה מוגן. b/136194628
- תוקן באג שגרם ל-ANRationTracker לזרוק NPE אחרי שנייה כשמפעילים ביטול תוקף של מספר מכונות, השירות הופסק. b/137454915
- תוקן באג שגרם לכך שהחדר לא זיהה נכון את סוג ההחזרה של
פונקציית השעיה שעברה בירושה עם הערות
@RawQuery
. b/137878827 - הקוד שנוצר עבור
@Relation
עודכן כשמפתח הקשור הוא מסוג BLOB כדי להשתמש ב-ByteBuffer
מקביל. b/137881998 - תוקן באג שבו Room היה מתלונן על מגדירים חסרים ב-POJO שמשמשים כ-
פרמטרים של ישות חלקית של
@Insert
,@Update
ו-@Delete
. b/138664463 - תוקן באג שגרם ל'חדר' להתלונן על שחקנים חסרים מוגדר
המערכת התעלמה מהעמודה
@Entity
כשנעשה שימוש במחלקה של הישות ב-DAO מסוים שיטות. b/138238182 - תוקן באג שגרם לכך ש- Room לא המיר כראוי ארגומנטים בעלי שם לארגומנטים ארגומנטים תלויי מיקום שגורמים לחריגה בזמן ריצה כשמריצים שאילתה עם פרמטרים שנעשה בהם שימוש חוזר. b/137254857
גרסה 2.2.0-alpha01
10 ביולי 2019
תכונות חדשות
- מסד נתונים ארוז מראש: שני ממשקי API חדשים ב-
RoomDatabase.Builder
זמין ליצירתRoomDatabase
בהינתן מסד נתונים שכבר מאוכלס חדש.createFromAsset()
הוא כאשר קובץ מסד הנתונים שמאוכלס מראש נמצא תיקיית הנכסים של ה-APK, ואילוcreateFromFile()
בשביל הקובץ במיקום שרירותי. השימושים ב-API הזה משנים את ההתנהגות של העברות הרסניות, כך שבמהלך ההעברה החלופית, החדר ינסה כדי להעתיק מחדש את מסד הנתונים המאוכלס מראש, אם הוא זמין, אחרת הוא ישתמש ב- פשוט לשחרר וליצור מחדש את כל הטבלאות. b/62185732 - ערכי ברירת המחדל של הסכימה:
@ColumnInfo
כולל עכשיו מאפיין חדשdefaultValue
שאפשר להשתמש בו כדי לציין את ערך ברירת המחדל של עמודה. ערכי ברירת המחדל הם חלק מסכימת מסד נתונים, ויאומת במהלך ההעברות, אם שצוין. b/64088772הערה: אם סכימת מסד הנתונים כבר כוללת את ברירת המחדל כמו אלה שנוספו באמצעות
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
, ותחליט להגדיר ערכי ברירת מחדל באמצעות@ColumnInfo
אותן עמודות, ייתכן שתצטרכו לבצע העברה כדי לאמת ערכי ברירת מחדל שלא טופלו. צפייה העברות של חדרים אפשר לקבל מידע נוסף. - קשרים רבים לרבים: ל-
@Relation
יש עכשיו נכס חדשassociateBy
, שמקבלת הערה חדשה@Junction
, שמשמשת להצהרה על קשר צריך לספק מענה באמצעות טבלת צמתים (שנקראת גם טבלת איחוד). b/69201917 - יחסים מסוג אחד לאחד: ההגבלה בשדות של POJO עם הערות
@Relation
להיות מסוגList
אוSet
הוסרו, ביעילות שמאפשרת ייצוג של קשרים בעלי ערך יחיד. b/62905145 - ישות יעד: הערות DAO
@Insert
,@Update
ו-@Delete
עכשיו כולל נכס חדשtargetEntity
, שמאפשר לציין את טבלת היעד שיטת DAO נועדה לפעול. כך מתאפשרים הפרמטרים של DAO בתור POJO שרירותי, שיתפרשו כישויות חלקיות. בפועל, הפעולה הזו מאפשרת הכנסה, מחיקות ועדכונים חלקיים. b/127549506 - מעבד הערות מצטברות של Gradle: עכשיו Room הוא מבודד מסוג Gradle
ניתן להפעיל את מעבד ההערות ואת יכולת ההגדלה דרך המעבד
אפשרות
room.incremental
. צפייה האפשרויות של הכלי ליצירת חדר אפשר לקבל מידע נוסף. אם נתקלת בבעיות, אפשר לשלוח איתור באגים כאן. אנחנו מתכננים להפעיל את האפשרות של הגדלה כברירת מחדל בגרסה עתידית ויציבה. b/112110217
תיקוני באגים
- החדר לא יפיץ יותר את
EmptySetResultException
אל המטפל בשגיאות גלובליות כאשר ה-RX של שאילתה נשלח לפני השאילתה הושלמה. b/130257475 - תוקן באג שגרם להצגת הודעת שגיאה שגויה בחדר במהלך השעיה
פונקציית DAO שרשומה ב-
@RawQuery
לא כללה סוג החזרה. b/134303897 - החדר לא ייצור יותר מתאמי DAO עם סוגים גולמיים. b/135747255
גרסה 2.1.0
גרסה 2.1.0
13 ביוני 2019
החדר 2.1.0 ישוחרר ללא שינויים החל מ-2.1.0-rc01
. כאן אפשר למצוא את ההתחייבות שכלולה בגרסה.
שינויים חשובים מאז 2.0.0
- FTS: בחדר יש עכשיו תמיכה בישויות עם מיפוי
טבלת FTS3 או FTS4. כיתות שנוספו אליהן הערות
עכשיו אפשר להוסיף עוד הערות ל-
@Entity
באמצעות@Fts3
או@Fts4
כדי להצהיר כיתה עם טבלת חיפוש של טקסט מלא למיפוי. אפשרויות FTS להמשך זמינים להתאמה אישית דרך השיטות של ההערה. - תצוגות: בחדר יש עכשיו תמיכה בהצהרה על כיתה כשאילתה שמורה, שידועה גם
כתצוגה מפורטת, באמצעות
הערה אחת (
@DatabaseView
). - קורסים: שיטות DAO יכולות עכשיו להיות פונקציות השעיה. כלול טקסט מסוג
room-ktx
את יחסי התלות שלכם כדי לנצל את הפונקציונליות הזו. ארטיפקט ה-ktx מספקת גם את פונקציית התוסףRoomDatabase.withTransaction
בשביל לבצע טרנזקציות של מסד נתונים באמצעות קורוטין. - ערך אוטומטי: עכשיו אפשר להצהיר במרחב המשותף על ידי החדר
ערך אוטומטי
מחלקות עם הערות כישויות ו-POJOs. הערות בחדר
@PrimaryKey
, עכשיו אפשר להצהיר על@ColumnInfo
, על@Embedded
ועל@Relation
במצב אוטומטי את השיטות המופשטות של מחלקה עם הערות. שימו לב שההערות האלה מלווה ב-@CopyAnnotations
כדי שחדר יבין אותם כראוי. - תמיכה אסינכרונית נוספת: שיטות 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 ישתמש בצורה נכונה ב-constructor הראשי של Kotlin במחלקות נתונים (data class)
ולא צריך להצהיר על הנכסים כ-
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
כמקלט. האפשרות הזו מונעת דילוג על ה-wrapper הנוסף שלcoroutineScope { }
שנדרשות כדי להריץ דברים בבלוק הטרנזקציות בו-זמנית.
תיקוני באגים
- תוקן באג שגרם לכך ש- Room לא הצליח להתאים ל-TypeConverter עבור DAO של Kotlin שמכילה פרמטר מסוג Collection. b/122066791
גרסה 2.1.0-alpha06
22 במרץ 2019
שינויים ב-API או בהתנהגות
- שאילתות אסינכרוניות עם טרנזקציות עוברות עכשיו סריאליות, כך ש- Room לא ישתמש
יותר משרשור אחד לביצוע טרנזקציות של מסד נתונים.
RoomDatabase.Builder.setTransactionExecutor(Executor)
נוסף כדי לאפשר גישה הגדרה של קובץ ה-APP לשימוש בטרנזקציות. - האריזה של
RoomDatabase.runInTransaction(Callable)
לא תהיה יותר מסומנת חריגים לחריגים בזמן הריצה. b/128623748
תיקוני באגים
- תוקן באג שבעקבותיו הכלי למעקב אחרי ביטול התוקף הפסיק לצפות בתוכן טבלה אם צופים גם בטבלת התוכן וגם ב-FTS של תוכן חיצוני נוספו טבלה. b/128508917
- הדקדוק של SQLite עודכן כדי שיתאים ל-SQLite 3.24.0. b/110883668
גרסה 2.1.0-alpha05
13 במרץ 2019
תכונות חדשות
- פונקציית התוסף
RoomDatabase.withTransaction
מאפשרת לבצע עסקאות במסד הנתונים בצורה בטוחה בתוך קורוטין. בארטיפקט שלroom-ktx
יש פונקציות של תוספים לחדרים ותמיכה בקורוטינים. - עכשיו אפשר להשתמש בפונקציות השעיה כדי להוסיף שיטות DAO לא מופשטות עם הערות ב-
@Transaction
. b/120241587
שינויים ב-API או בהתנהגות
- השם של פריט המידע שנוצר בתהליך הפיתוח (Artifact)
room-coroutines
השתנה ל-room-ktx
באותו שם כמו פריטי Artifact אחרים של Androidx. - הפרמטרים
beginTransaction
,setTransactionSuccessful
ו-endTransaction
ב-RoomDatabase
הוצאו משימוש לטובתrunInTransaction
והפונקציהroom-ktx
של התוסףwithTransaction
.
תיקוני באגים
- תוקן באג שבו הושמטו ארגומנטים מהאסימונים אם כלי ההמרה לאסימונים היה SIMPLE. b/125427014
- תוקן באג שגרם לכך ש- Room לא הצליח לזהות בצורה נכונה פונקציות השעיה עם פרמטרים שהסוג שלהם היה מחלקה פנימית. b/123767877
- תוקן באג שגרם לדחייה של שיטת DAO של
@Query
עם הצהרותINSERT
,UPDATE
אוDELETE
, שהכינו באופן יסודי את השאילתה ב-thread הראשי. b/123695593 - תוקנו באגים שונים שגרמו לחדרים ליצור קוד שגוי לפונקציות השעיה מסוימות. b/123466702 ו-b/123457323
- תוקן באג שגרם לכך שהשימוש ב-methods שהוצא משימוש לא הוסתר בצורה נכונה בקוד שנוצר. b/117602586
- התלות של החדר עודכנה ל-androidx.sqlite ל-1.0.2, עם תיקונים לטיפול נכון במסדי נתונים פגומים. b/124476912
בעיות מוכרות
- חדר 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 או בהתנהגות
- עכשיו, 'חדר' יציג שגיאה אם שיטת DAO לא מופשטת שמסומנת בהערה
@Transaction
מחזירה סוג אסינכרוני כמוSingle
,Mayble
,Completable
,LiveData
אוListenableFuture
. העסקאות מוגבלות בשרשורים, ולכן בשלב הזה אין אפשרות ל- Room להתחיל ולסיים טרנזקציה סביב פונקציה שעשויה להתאים לשאילתות בשרשורים שונים. b/120109336 OnConflictStrategy.FAIL
ו-OnConflictStrategy.ROLLBACK
הם@Deprecated
כי הם לא פועלים כמצופה עם קישורי SQLite הנוכחיים של Android. b/117266738
תיקוני באגים
- תוקן באג שגרם לכך ש- Room לא היה משתמש כראוי ב-TypeConverter של סוג החזרה אם שיטת DAO הייתה פונקציית השעיה. b/122988159
- תוקן באג שגרם לכך ש'חדר' זיהה בטעות פונקציות השעיה שעברו בירושה כפונקציות שלא נמצאות בהוצאות. b/122902595
- תוקן באג שגרם ל'חדר' ליצור קוד שגוי כששדה
@Embedded
היה בכיתת הורה ונעשה בו שימוש במספר כיתות צאצא. b/121099048 - תוקנה בעיה שגרמה לניתוק מסד הנתונים כשמפעילים פונקציות השעיה של DAO בין
beginTransaction()
ל-endTransaction()
. b/120854786
גרסה 2.1.0-alpha03
4 בדצמבר 2018
שינויים ב-API
- ה-FTS
tokenizer
ב-@Fts3
/@Fts4
מקבל עכשיו מחרוזת במקום Enum. כך אפשר להשתמש בכלי ההמרה לאסימונים בהתאמה אישית ב'חדר'. כלים מובנים לאסימונים עדיין מוגדרים ב-FtsOptions
כקבועים של מחרוזות. b/119234881
תכונות חדשות
- קורסים: שיטות DAO יכולות עכשיו להיות פונקציות השעיה. כדי לתמוך בפונקציות השעיה בחדר, הושק ארטיפקט חדש:
room-coroutines
. b/69474692 - שיטות DAO עם הערות
@Insert
,@Delete
או@Update
תומכות עכשיו ב-ListenableFuture
כסוג החזרה. b/119418331
תיקוני באגים
- תוקן באג שגרם ל'חדר' מנסה למצוא באופן שגוי בנאי עם עמודות בנכס
ignoredColumns
של@Entity
. b/119830714 - תוקן באג שגרם לכך שפרמטרים של שיטת DAO לא סימנו פרמטרים של שיטת DAO כפרמטרים סופיים בהטמעה שנוצרה. b/118015483
- תוקן באג שגרם לקריסה של המעבד של החדר כשמדווח על שגיאה בשאילתה עם סמלים מיוחדים. b/119520136
- תוקן באג שגרם לדחייה של הטמעות שונות של
Collection
כארגומנטים של ביטויIN
ב-חדר. b/119884035 - תוקן באג שגרם לכך שהנתונים ב-LiveData שהוחזרו מ'חדר' ייאספו תמיד של האשפה כשהם יזוהו לתמיד, וכתוצאה מכך לא ייקלטו יותר נתונים חדשים. b/74477406
- הנעילה הקרובה של
RoomDatabase
עודכנה כדי לצמצם את התחרות על הנעילה. b/117900450
גרסה 2.1.0-alpha02
30 באוקטובר 2018
תכונות חדשות
- נוספה תמיכה בהפניה אל
@DatabaseView
ב-@Relation
. b/117680932
תיקוני באגים
- תוקן באג שגרם לקלט/פלט של דיסק ב-thread הראשי במהלך הרשמה והשלכה מסוג החזרה של Rx. b/117201279
- תוקן באג שגרם ל'חדר' לא מצא ממיר מסוג מתאים לשדה במחלקה של ישות Kotlin. b/111404868
- תוקן באג שגרם ל- Room ליצור קוד שגוי להטמעה של ממשק
DAO
שמכילה שיטת ברירת מחדל של Kotlin ללא ארגומנטים. b/117527454 - עדכנו את כלי הניתוח לדקדוק SQLite של Room, ותיקנתי בעיה בביצועים שגרמה לזמני פיתוח ארוכים. b/117401230
גרסה 2.1.0-alpha01
8 באוקטובר 2018
תכונות חדשות
- FTS: החדר תומך עכשיו בישויות עם טבלת FTS3 או FTS4 של מיפוי. עכשיו אפשר להוסיף הערות לכיתות עם
@Entity
באמצעות@Fts3
או@Fts4
, כדי להצהיר על כיתה עם טבלת חיפוש של טקסט מלא במיפוי. יש אפשרויות של FTS להתאמה אישית נוספת דרך השיטות של ההערה. b/62356416 - Views: עכשיו אפשר להצהיר על כיתה כשאילתה שמורה ב- Room, שנקראת גם View (תצוגה מפורטת) באמצעות ההערה @DatabaseView. b/67033276
- Auto Value: התכונה Room תומכת עכשיו בהצהרה על מחלקות עם הערות AutoValue כישויות ו-POJO. עכשיו אפשר להצהיר על הערות החדר
@PrimaryKey
,@ColumnInfo
,@Embedded
ו-@Relation
בשיטות מופשטות של סיווג אוטומטי עם הערות. חשוב לשים לב שכדי להבין כראוי את ההערה בחדר, יש לצרף גם את ההערה@CopyAnnotations
. b/62408420 - תמיכה בסוגי החזרה נוספים של Rx: שיטות DAO עם הערות ב-
@Insert
, ב-@Delete
או ב-@Update
תומכות עכשיו בסוגי החזרה של RxCompletable
,Single<T>
ו-Maybe<T>
. b/63317956 - סוגים שאינם ניתנים לשינוי עם
@Relation
: בעבר היה צורך ב-@Relation
שדות עם הערות כדי להגדיר חדר, אבל עכשיו הם יכולים להיות פרמטרים של constructor. enableMultiInstanceInvalidation
: זהו API חדש ב-RoomDatabase.Builder
שמאפשר ביטול תוקף במספר מופעים של RoomDatabase באמצעות אותו קובץ מסד נתונים. המנגנון לביטול תוקף של כמה מכונות פועל גם במספר תהליכים. b/62334005fallbackToDestructiveMigrationOnDowngrade
: הוא API חדש ב-RoomDatabase.Builder
שבעזרתו ניתן ליצור מחדש את מסד הנתונים באופן אוטומטי במקרה של שדרוג לאחור. b/110416954ignoredColumns
: מדובר ב-API חדש בהערה@Entity
שאפשר להשתמש בו כדי להציג את רשימת השדות שהמערכת מתעלמת מהם לפי השם. המאפיין הזה שימושי להתעלמות משדות שעברו בירושה בישות. b/63522075
שינויים ב-API או בהתנהגות
- השמות של
mCallback
ו-mDatabase
בRoomDatabase
הם עכשיו@Deprecated
, והם יוסרו בגרסה הראשית הבאה של 'חדר'. b/76109329
תיקוני באגים
- תוקנו שתי בעיות שבהן חדר לא התאושש כמו שצריך ממסד נתונים פגום או מהעברה לא טובה במהלך האתחול. b/111504749 ו-b/111519144
- מעכשיו, Room ישתמש בצורה תקינה ב-constructor הראשי של 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-בטא01.
גרסה 2.0.0-beta01
2 ביולי 2018
שינויים ב-API או בהתנהגות
- הוספת את
RoomDatabase.Builder.setQueryExecutor()
כדי לאפשר התאמה אישית של המיקומים שבהם מריצים שאילתות - נוספה תמיכה ב-RxJava2
Observable
- הטמעות DAO ומסד נתונים שנוצרו הן סופיות עכשיו
תיקוני באגים
- צריך לציין את שם המחלקה/השדה בשדה 'לא ניתן למצוא את getter בשדה' שגיאה b/73334503
- תוקנה תאימות לאחור של RoomOpenHelper לגרסאות ישנות של Room b/110197391
יחסי תלות לפני 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
אנחנו מאוד רוצים
אם אתם מבצעים העברות, מומלץ להשתמש בחדר 1.1.1-rc1
במקום 1.1.0
.
תוקן באג שגרם לכך שחדר המודעות לא יטפל כראוי באתחול העברה לאחר b/79362399
גרסה 1.1.0
גרסה 1.1.0-בטא3
19 באפריל 2018
תיקוני באגים
- תיקון שגיאת הידור (compilation) כש-POJO של Kotlin מפנה לישות קשר ש הוגדרה ב-Java b/78199923
גרסה 1.1.0-בטא2
5 באפריל 2018
תיקוני באגים
תוקן באג קריטי בהטמעות של Rx
Single
ו-Maybe
בחדר ממחזר את השאילתה מראש, וגורם לבעיות אם מוסיפים יותר מ-1 של הצופה, שהוחזרוSingle
אוMaybe
. b/76031240[ RoomDatabase.clearAllTables][ref-clearAllTables] לא
VACUUM
את מסד הנתונים אם הוא נקרא בעסקה. b/77235565
גרסה 1.1.0-beta1
21 במרץ 2018
שינויים ב-API
- על סמך המשוב מבדיקת ה-API, הפרמטר
@RawQuery
לא מאפשר יותר להעבירString
כפרמטר של השאילתה. צריך להשתמש ב-[SupportSQLiteQuery][ref-SupportSQLiteQuery]. (ניתן לעיין במאמר [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] כדי ליצור בקלות מכונה של [SupportSQLiteQuery][ref-SupportSQLiteQuery] עם תמיכה בארגומנטים). - המתודה [fallbackToDestructiveMigrationFrom] של RoomDatabase.Builder מתוך][ref-fallbackToDestructiveMigrationFrom] מקבלת עכשיו את הפקודה
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 החדש הזה מאפשר ל-@Dao
methods לקבל את ה-SQL כפרמטר של שאילתה b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: ה-API החדש הזה ב-RoomDatabase.Builder
מאפשר שליטה פרטנית יותר לגבי המקור של גרסאות הסכימה: העברות הרסניות מותר (בהשוואה ל-fallbackToDestructive Migration) b/64989640- אפליקציית Room תומכת עכשיו רק בממשקי API חדשים יותר של דפים (alpha-4+ ), ומפחיתה את התמיכה בגרסאות שהוצאו משימוש
LivePagedListProvider
כדי להשתמש בגרסת האלפא החדשה של החדר, צריך להשתמש בחלוקה לדפיםalpha-4
ואילך, ועוברים מ-LivePagedListProvider
ל-LivePagedListBuilder
אם עדיין לא עשית זאת.
תיקוני באגים
- תמיכה משופרת לסוגי Kotlin Kapt. b/69164099
- סדר השדות כבר לא מבטל את תוקף הסכימה. b/64290754