חדר

ספריית הקבועים של החדרים מספקת בשכבת הפשטה של SQLite כדי לאפשר גישה יעילה יותר למסדי נתונים שמנצלים את מלוא העוצמה של SQLite.
העדכון האחרון גרסה יציבה מועמד לפרסום גרסת בטא גרסת אלפא
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(). האסטרטגיה החדשה:

  1. הגדרת אובייקט מצופה שמטמיע את RoomDatabaseConstructor

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. קישור האובייקט להצהרה @Database באמצעות @ConstructedBy

      @Database(...)
      @ConstructedBy(MyDatabaseCtor::class) // NEW
      abstract class MyDatabase : RoomDatabase
    
  3. יצירת מכונת מסד נתונים חדשה אבל בלי לעבור ארגומנט במפעל

      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 מכילה את התחייבויות אלה.

תכונות חדשות

  • סוגי החזרה של מפות בתוך פונקציות בפונקציות DAO נתמכים עכשיו ב'חדר'. (I13f48, 203008711)

שינויים ב-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 מכילה את התחייבויות אלה.

תכונות חדשות

שינויים ב-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 הצהרות, כעת תומכות בסוגי החזרת Rx Completable, Single, Maybe, ואת סוג ההחזרה של Guava ListenableFuture, ואפשר גם להשעות למשימות ספציפיות.
  • 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 תומכות עכשיו בסוגי החזרה של Rx Completable, Single<T> ו-Maybe<T>. b/63317956
  • סוגים שאינם ניתנים לשינוי עם @Relation: בעבר היה צורך ב-@Relation שדות עם הערות כדי להגדיר חדר, אבל עכשיו הם יכולים להיות פרמטרים של constructor.
  • enableMultiInstanceInvalidation: זהו API חדש ב-RoomDatabase.Builder שמאפשר ביטול תוקף במספר מופעים של RoomDatabase באמצעות אותו קובץ מסד נתונים. המנגנון לביטול תוקף של כמה מכונות פועל גם במספר תהליכים. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: הוא API חדש ב-RoomDatabase.Builder שבעזרתו ניתן ליצור מחדש את מסד הנתונים באופן אוטומטי במקרה של שדרוג לאחור. b/110416954
  • ignoredColumns: מדובר ב-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/71458963
  • fallBackToDestructiveMigrationsFrom: ה-API החדש הזה ב-RoomDatabase.Builder מאפשר שליטה פרטנית יותר לגבי המקור של גרסאות הסכימה: העברות הרסניות מותר (בהשוואה ל-fallbackToDestructive Migration) b/64989640
  • אפליקציית Room תומכת עכשיו רק בממשקי API חדשים יותר של דפים (alpha-4+ ), ומפחיתה את התמיכה בגרסאות שהוצאו משימוש LivePagedListProvider כדי להשתמש בגרסת האלפא החדשה של החדר, צריך להשתמש בחלוקה לדפים alpha-4 ואילך, ועוברים מ-LivePagedListProvider ל-LivePagedListBuilder אם עדיין לא עשית זאת.

תיקוני באגים

  • תמיכה משופרת לסוגי Kotlin Kapt. b/69164099
  • סדר השדות כבר לא מבטל את תוקף הסכימה. b/64290754