اتاق
کتابخانه تداوم اتاق یک لایه انتزاعی را بر روی SQLite فراهم می کند تا در عین استفاده از قدرت کامل SQLite، امکان دسترسی قوی تر به پایگاه داده را فراهم کند.
آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
30 اکتبر 2024 2.6.1 - - 2.7.0-alpha11
اعلام وابستگی ها

برای افزودن وابستگی به Room، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.

وابستگی‌های اتاق شامل آزمایش مهاجرت‌های اتاق و اتاق RxJava است

وابستگی‌های مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

کاتلین
dependencies {
    val room_version = "2.6.1"

    implementation("androidx.room:room-runtime:$room_version")

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See Add the KSP plugin to your project
    ksp("androidx.room:room-compiler:$room_version")

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor("androidx.room:room-compiler:$room_version")

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation("androidx.room:room-ktx:$room_version")

    // optional - RxJava2 support for Room
    implementation("androidx.room:room-rxjava2:$room_version")

    // optional - RxJava3 support for Room
    implementation("androidx.room:room-rxjava3:$room_version")

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation("androidx.room:room-guava:$room_version")

    // optional - Test helpers
    testImplementation("androidx.room:room-testing:$room_version")

    // optional - Paging 3 Integration
    implementation("androidx.room:room-paging:$room_version")
}
شیار
dependencies {
    def room_version = "2.6.1"

    implementation "androidx.room:room-runtime:$room_version"

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See KSP Quickstart to add KSP to your build
    ksp "androidx.room:room-compiler:$room_version"

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // optional - RxJava2 support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // optional - Test helpers
    testImplementation "androidx.room:room-testing:$room_version"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:$room_version"
}

برای اطلاعات در مورد استفاده از افزونه KAPT، به مستندات KAPT مراجعه کنید.

برای اطلاعات در مورد استفاده از افزونه KSP، به مستندات شروع سریع KSP مراجعه کنید.

برای اطلاعات در مورد استفاده از پسوندهای Kotlin، به مستندات ktx مراجعه کنید.

برای اطلاعات بیشتر درباره وابستگی‌ها، به افزودن وابستگی‌های ساخت مراجعه کنید.

به صورت اختیاری، برای کتابخانه‌های غیر اندروید (یعنی فقط ماژول‌های Gradle جاوا یا Kotlin) می‌توانید برای استفاده از حاشیه‌نویسی اتاق به androidx.room:room-common وابسته باشید.

پیکربندی گزینه های کامپایلر

اتاق دارای گزینه های پردازشگر حاشیه نویسی زیر است.

room.schemaLocation directory
صادرات طرحواره های پایگاه داده به فایل های JSON در فهرست داده شده را فعال می کند. برای اطلاعات بیشتر به اتاق مهاجرت مراجعه کنید.
room.incremental boolean
پردازشگر حاشیه نویسی افزایشی Gradle را فعال می کند. مقدار پیش فرض true است.
room.generateKotlin boolean
به جای جاوا فایل های منبع Kotlin را تولید کنید. به KSP نیاز دارد. مقدار پیش فرض false است. برای جزئیات بیشتر به یادداشت‌های نسخه 2.6.0 مراجعه کنید.
از پلاگین Room Gradle استفاده کنید

با نسخه Room 2.6.0 و بالاتر، می توانید از پلاگین Room Gradle برای پیکربندی گزینه ها برای کامپایلر Room استفاده کنید. این افزونه پروژه را به گونه ای پیکربندی می کند که طرحواره های تولید شده (که خروجی وظایف کامپایل هستند و برای انتقال خودکار مصرف می شوند) به درستی پیکربندی شوند تا ساخت های قابل تکرار و ذخیره سازی داشته باشند.

برای افزودن افزونه، در فایل ساخت سطح بالای Gradle خود، افزونه و نسخه آن را تعریف کنید.

شیار
plugins {
    id 'androidx.room' version "$room_version" apply false
}
کاتلین
plugins {
    id("androidx.room") version "$room_version" apply false
}

در فایل ساخت Gradle در سطح ماژول، افزونه را اعمال کنید و از پسوند room استفاده کنید.

شیار
plugins {
    id 'androidx.room'
}

android {
    ...
    room {
        schemaDirectory "$projectDir/schemas"
    }
}
کاتلین
plugins {
    id("androidx.room")
}

android {
    ...
    room {
        schemaDirectory("$projectDir/schemas")
    }
}

هنگام استفاده از پلاگین Room Gradle، تنظیم یک schemaDirectory مورد نیاز است. این کامپایلر اتاق و وظایف مختلف کامپایل و باطن‌های آن (javac، KAPT، KSP) را برای خروجی فایل‌های طرحواره در پوشه‌های طعم‌دار، برای مثال schemas/flavorOneDebug/com.package.MyDatabase/1.json ، پیکربندی می‌کند. این فایل‌ها باید در مخزن بررسی شوند تا برای اعتبارسنجی و مهاجرت‌های خودکار استفاده شوند.

برخی از گزینه ها را نمی توان در تمام نسخه های پلاگین Room Gradle پیکربندی کرد، حتی اگر توسط کامپایلر Room پشتیبانی شوند. جدول زیر هر گزینه را فهرست می‌کند و نسخه پلاگین Room Gradle را نشان می‌دهد که برای پیکربندی آن گزینه با استفاده از افزونه room پشتیبانی می‌کند. اگر نسخه شما پایین‌تر است، یا اگر این گزینه هنوز پشتیبانی نمی‌شود، می‌توانید به جای آن از گزینه‌های پردازشگر حاشیه‌نویسی استفاده کنید.

گزینه از نسخه
room.schemaLocation (الزامی) 2.6.0
room.incremental -
room.generateKotlin -
از گزینه های پردازشگر حاشیه نویسی استفاده کنید

اگر از افزونه Room Gradle استفاده نمی‌کنید، یا اگر گزینه مورد نظر توسط نسخه افزونه شما پشتیبانی نمی‌شود، می‌توانید اتاق را با استفاده از گزینه‌های پردازشگر حاشیه‌نویسی پیکربندی کنید، همانطور که در Add build dependencies توضیح داده شده است. نحوه تعیین گزینه های حاشیه نویسی به استفاده از 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...
                    ]
            }
        }
    }
}
کاتلین
// 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-alpha11

30 اکتبر 2024

androidx.room:room-*:2.7.0-alpha11 منتشر شد. نسخه 2.7.0-alpha11 حاوی این commit ها است.

تغییرات API

  • امضای متد convertRows() که به تازگی اضافه شده را مجدداً مشاهده کنید تا یک تابع تعلیق باشد که RawRoomQuery را برای صفحه‌بندی اتاق دریافت می‌کند. ( Ie57b5 , b/369136627 )

رفع اشکال

  • مشکل در صفحه‌بندی اتاق که در آن کد نامعتبر هنگام استفاده از @Relation در ارتباط با PagingSource ایجاد می‌شد، برطرف شد.
نسخه 2.7.0-alpha10

16 اکتبر 2024

androidx.room:room-*:2.7.0-alpha10 منتشر شد. نسخه 2.7.0-alpha10 حاوی این تعهدات است.

تغییرات API

  • کلاس داخلی ByteArrayWrapper را برای پشتیبانی از روابط با ByteBuffer در پلتفرم‌های غیر اندروید و غیر JVM ایجاد کنید. ( I75543 , b/367205685 )
  • SQLiteStatement.getColumnType() به همراه ثابت های مختلف نتیجه SQLITE_DATA_* اضافه کنید تا بتوان نوع داده یک ستون را بازیابی کرد. ( I1985c , b/369636251 )
نسخه 2.7.0-alpha09

2 اکتبر 2024

androidx.room:room-*:2.7.0-alpha09 منتشر شد. نسخه 2.7.0-alpha09 حاوی این تعهدات است.

رفع اشکال

  • مشکلی در پیاده‌سازی KMP room-paging که باعث ایجاد Error code: 8, message: attempt to write a readonly database به دلیل شروع تراکنش نوشتن در یک اتصال خواندنی را برطرف کنید. ( b/368380988 )
نسخه 2.7.0-alpha08

18 سپتامبر 2024

androidx.room:room-*:2.7.0-alpha08 منتشر شد. نسخه 2.7.0-alpha08 حاوی این commit ها است.

ویژگی های جدید

  • مصنوعات room-paging برای سازگاری با KMP مهاجرت کرده‌اند. ( Ib8756 , b/339934824 )
  • API invalidationTrackerFlow() به عنوان یک API شخص اول با نام InvalidationTracker.createFlow() رایج شده است و اکنون برای مجموعه‌های منبع غیر Android در پروژه‌های KMP در دسترس است. ( I1fbfa , ( I8fb29 ), b/329291639 , b/329315924 )

تغییرات API

  • همه هشدارها و پیام‌های خطا در اتاق که از کلمه Cursor استفاده می‌کنند حذف یا جایگزین شده‌اند، زیرا Cursor دیگر یک اصطلاح کلی دقیق برای استفاده در نسخه KMP اتاق نیست. ( ID8cd9 , b/334087492 )

رفع اشکال

  • مشکلی را که در آن Room KMP سعی می‌کرد با استفاده از UUID برای پلتفرم‌های غیرJVM کد ارسال کند، برطرف شد. ( b/362994709 )
  • مشکلی در پلاگین Room Gradle برطرف شد که در هنگام استفاده در پروژه KMP با Compose Multiplatform خطایی مانند «نمی‌توان ویژگی‌های پیکربندی را تغییر داد … پس از قفل شدن برای جهش» ایجاد می‌کرد. ( b/343408758 )
نسخه 2.7.0-alpha07

21 آگوست 2024

androidx.room:room-*:2.7.0-alpha07 منتشر شد. نسخه 2.7.0-alpha07 حاوی این commit ها است.

ویژگی های جدید

  • پلاگین Room Gradle اکنون به طور خودکار طرحواره های صادر شده را به منابع منبع تست ابزار دقیق Android اضافه می کند تا بتوان از آنها توسط MigrationTestHelper استفاده کرد.

رفع اشکال

  • اگر چنین تابعی در اعلان «انتظار» نیز لغو شود، مشکل «واقعی» ایجاد شده در RoomDatabaseConstructor که اصلاحگر «واقعی» را در تابع initialize از دست داده بود، برطرف شد. ( 359631627 )
  • مشکلی را که مربوط به «واقعی» ایجاد شده در RoomDatabaseConstructor با قابلیت مشاهده اعلان «انتظار» مطابقت نداشت برطرف شد. ( 358138953 )
نسخه 2.7.0-alpha06

7 آگوست 2024

androidx.room:room-*:2.7.0-alpha06 منتشر شد. نسخه 2.7.0-alpha06 حاوی این commit ها است.

تغییرات API

  • تنظیمات instantiation را برای RoomDatabase در یک پروژه KMP تغییر دهید.

با توجه به مدل کامپایل Kotlin 2.0، استراتژی ارجاع به یک تابع تولید شده با نام instantiateImpl() طولانی تر است. دو API جدید به @ConstructedBy و RoomDatabaseConstructor معرفی شده‌اند که جایگزین استراتژی instantiateImpl() می‌شوند. استراتژی جدید به شرح زیر است:

  1. یک شیء انتظار را تعریف کنید که RoomDatabaseConstructor را پیاده سازی می کند

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. با استفاده از @ConstructedBy شی را با اعلان @Database پیوند دهید

      @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 در Room KMP با افزودن یک API جدید به نام RoomRawQuery که شبیه به SupportSQLiteQuery از نظر نگهداری در رشته خام SQL و تابعی برای اتصال آرگومان ها به یک عبارت است. توابع حاشیه نویسی @RawQuery اکنون می توانند یک RoomRawQuery را به عنوان پارامتر واحد خود بپذیرند. ( Iea844 , b/330586815 )
  • اضافه باری از setQueryCallback() اضافه کنید که یک CoroutineContext می پذیرد. ( Id66ff , b/309996304 )
  • پشتیبانی از اهداف چند پلتفرمی linuxArm64 Kotlin ( I139d3 , b/338268719 ) اضافه شد

رفع اشکال

  • مشکلی را برطرف کنید که در آن Room به اشتباه به recursiveFetchArrayMap در اهداف غیر اندرویدی فراخوانی می‌دهد. ( 710c36 , b/352482325 )
  • مشکلی را برطرف کنید که در آن اتاق گاهی اوقات در پروژه KMP استثنایی در مورد «به‌مدت زمان‌بندی تلاش برای اتصال» ایجاد می‌کند. ( fa72d0 , b/347737870 )
  • مشکلی را در مهاجرت‌های خودکار برطرف کنید که باعث می‌شود قبل از اینکه جدول‌های دیگر طرح‌های خود را برای مطابقت با کلیدهای خارجی جدید تغییر دهند، خیلی زود کلیدهای خارجی را بررسی می‌کنند. ( 7672c0 , b/352085724 )
نسخه 2.7.0-alpha05

10 جولای 2024

androidx.room:room-*:2.7.0-alpha05 منتشر شد. نسخه 2.7.0-alpha05 حاوی این commit ها است.

تغییرات 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 حاوی این commit ها است.

رفع اشکال

  • رفع مشکلی در پردازنده حاشیه نویسی اتاق که باعث ایجاد کد 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 حاوی این commit ها است.

رفع اشکال

  • مشکلات مختلف مربوط به 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 حاوی این commit ها است.

ویژگی های جدید

  • پشتیبانی از چند پلتفرم Kotlin (KMP) : در این نسخه، Room به یک کتابخانه چند پلتفرمی Kotlin (KMP) تبدیل شده است. اگرچه هنوز مقداری کار برای انجام وجود دارد، این نسخه نسخه جدیدی از Room را معرفی می کند که در آن اکثر عملکردها "مشترک" شده اند (ساخته شده برای چند پلتفرم). پلتفرم‌های پشتیبانی شده فعلی Android، iOS، JVM (Desktop)، Mac بومی و لینوکس بومی هستند. هر گونه عملکردی که در پلتفرم‌های جدید پشتیبانی شده وجود نداشته باشد، در نسخه‌های اتاق آینده "کامل با ویژگی" خواهد شد.

برای اطلاعات بیشتر در مورد نحوه شروع استفاده از Room KMP، لطفاً به مستندات رسمی اتاق KMP مراجعه کنید.

  • اگر پردازش از طریق KSP انجام شود ، تولید کد Kotlin در KSP به طور پیش فرض روشن شده است. برای پروژه‌های فقط KAPT یا جاوا، Room همچنان منابع جاوا را تولید می‌کند.

تغییرات API

  • اضافه بار از Room.databaseBuilder() اضافه شده است که یک پارامتر lambda را می گیرد که قرار است با یک تابع ایجاد شده اتاق استفاده شود تا از بازتاب در هنگام نمونه سازی اجرای RoomDatabase تولید شده جلوگیری شود. مثال استفاده این است:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • یک API برای پیکربندی اتاق با CoroutineContext به سازنده اضافه شده است: RoomDatabase.Builder.setQueryCoroutineContext . توجه داشته باشید که یک RoomDatabase فقط می توان با مجریانی که از setQueryExecutor استفاده می کنند یا با زمینه Coroutine پیکربندی کرد، اما نه هر دو.
  • یک API برای پیکربندی اتاق با درایور SQLite اضافه شده است: RoomDatabase.Builder.setDriver() . برای اطلاعات بیشتر در مورد SQLite Driver API به مستندات SQLite KMP مراجعه کنید
  • APIهایی برای دسترسی به SQLiteConnection اساسی از APIهای درایور اضافه شده است: RoomDatabase.useReaderConnection و RoomDatabase.useWriterConnection .
  • تماس‌های مربوط به اتاق Varios اکنون یک نسخه بارگذاری شده دارند که به جای SupportSQLiteDatabase SQLiteConnection دریافت می‌کند. این موارد در نظر گرفته شده است که هنگام مهاجرت به یک پروژه KMP نادیده گرفته شوند. برای اطلاعات بیشتر در مورد انتقال استفاده از اتاق در یک برنامه Android به یک ماژول معمولی KMP به راهنمای انتقال مراجعه کنید. تماس ها عبارتند از:
    • Migration.migrate(SQLiteConnection)
    • AutoMigrationSpec.onPostMigrate(SQLiteConnection)
    • RoomDatabase.Callback.onCreate(SQLiteConnection)
    • RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
    • RoomDatabase.Callback.onOpen(SQLiteConnection)
  • مصنوع KTX androidx.room:room-ktx به همراه همه APIهای آن با androidx.room:room-runtime ادغام شده است، این مصنوع اکنون خالی است. لطفاً آن را از لیست وابستگی خود حذف کنید.
نسخه 2.6 نسخه 2.6.1

29 نوامبر 2023

androidx.room:room-*:2.6.1 منتشر شد. نسخه 2.6.1 حاوی این commit ها است.

رفع اشکال

  • مشکل در کد ایجاد شده حل شد که در آن مقدار پیش‌فرض برای ستون‌های Double در EntityCursorConverter به جای 0.0 روی 0 تنظیم شده بود. یک اصلاح بالقوه برای یک لبه مشابه برای ستون‌های نوع Float نیز گنجانده شده است. ( Id75f5 , b/304584179 )
  • استثناهای پرتاب شده از بارهای PagingSource اکنون به عنوان یک LoadStateUpdate از LoadResult.Error حاوی Throwable منتشر می شود. این حالت خطا از طریق PagingDataAdapter.loadStateFlow(Views) یا LazyPagingItems.loadState(Compose) قابل مشاهده است. توجه داشته باشید که این یک تغییر رفتاری را نشان می‌دهد که در آن خطاهای بارگذاری گذشته به عنوان یک استثنا ایجاد می‌شوند که توسط روش dao که بار را راه‌اندازی می‌کند، ایجاد می‌شود. ( I93887 , b/302708983 )
نسخه 2.6.0

18 اکتبر 2023

androidx.room:room-*:2.6.0 منتشر شد. نسخه 2.6.0 حاوی این commit ها است.

تغییرات مهم از 2.5.0

  • گزینه فعال کردن تولید کد Kotlin (یا "Kotlin CodeGen") اکنون در Room KSP موجود است. ( 4297ec0 ). برای روشن کردن Kotlin CodeGen در اتاق، نام گزینه room.generateKotlin را به گزینه های پردازنده خود برای KSP اضافه کنید. برای جزئیات بیشتر در مورد نحوه انتقال گزینه های پردازنده برای KSP، به مستندات KSP مراجعه کنید.

توجه: هنگام استفاده از Kotlin CodeGen، مهم است که توجه داشته باشید که محدودیت‌های اضافی اضافه شده است. ویژگی‌های انتزاعی به‌عنوان دریافت‌کننده DAO یا پرس‌وجوهای DAO در Kotlin CodeGen غیرمجاز هستند، و در عوض انتظار می‌رود که به‌عنوان توابع بازنویسی شوند تا از این تصور غلط مبنی بر اینکه مقدار ویژگی تغییرناپذیر است و یک نتیجه ذخیره شده ثابت دارد، جلوگیری شود. محدودیت دیگری که اضافه شده است این است که انواع بازگشت مجموعه Nullable دیگر در Room for Kotlin CodeGen مجاز نیستند.

هشدار: ممکن است متوجه شوید که پروژه‌های شما از نظر پوچ‌پذیری در هنگام استفاده از Kotlin CodeGen سخت‌گیرانه‌تر هستند. در Kotlin CodeGen، پوچ بودن آرگومان های نوع مهم است، در حالی که در جاوا این امر بیشتر نادیده گرفته می شود. به عنوان مثال، فرض کنید یک «جریان» دارید ` نوع بازگشت و جدول خالی است. در Java CodeGen این مشکلی ایجاد نمی کند، اما در Kotlin CodeGen با خطا مواجه می شوید. برای جلوگیری از این امر، باید از «Flow» استفاده کنید با فرض اینکه یک عدد صفر منتشر شده باشد.

  • مصنوع جدید برای پلاگین Room Gradle با شناسه androidx.room به اتاق اضافه شده است، که مشکلات مختلف موجود در اتاق را در رابطه با داشتن ورودی و خروجی طرحواره ها از طریق گزینه های پردازشگر حاشیه نویسی Gradle حل می کند. برای جزئیات بیشتر، به یادداشت‌های انتشار اتاق نسخه 2.6.0-alpha02 مراجعه کنید.
  • کلاس‌های ارزش در موجودیت‌های اتاق اکنون برای KSP پشتیبانی می‌شوند. ( 4194095 )
  • انواع بازگشت نقشه تو در تو در توابع DAO اکنون در Room پشتیبانی می شوند. ( I13f48 , 203008711 )
نسخه 2.6.0-rc01

20 سپتامبر 2023

androidx.room:room-*:2.6.0-rc01 منتشر شد. نسخه 2.6.0-rc01 حاوی این commit ها است.

نسخه 2.6.0-beta01

23 آگوست 2023

androidx.room:room-*:2.6.0-beta01 منتشر شد. نسخه 2.6.0-beta01 حاوی این تعهدات است.

رفع اشکال

  • رسیدگی به استثنای مورد خاص SQLite در حین upsert که وقتی استثنای 2067 SQLITE_CONSTRAINT_UNIQUE در حین upsert پرتاب می‌شود، upsert باید به‌روزرسانی را انجام دهد. ( If2849 , b/243039555 )
نسخه 2.6.0-alpha03

9 آگوست 2023

androidx.room:room-*:2.6.0-alpha03 منتشر شد. نسخه 2.6.0-alpha03 حاوی این commit ها است.

ویژگی های جدید

  • انواع بازگشت نقشه تو در تو در توابع DAO اکنون در Room پشتیبانی می شوند. ( I13f48 , 203008711 )

تغییرات API

  • یک نوع حاشیه نویسی جدید به نام @MapColumn به جای @MapInfo ایجاد شده است که اکنون منسوخ شده است. برای هر نام ستون ( keyColumnName ، valueColumnName ، یا هر دو) ارائه شده در یک حاشیه نویسی @MapInfo ، باید یک حاشیه نویسی @MapColumn را فقط با columnName اعلام کنید و از حاشیه نویسی روی آرگومان نوع خاصی که به آن ارجاع داده شده است (کلید یا مقدار) استفاده کنید. از نقشه) در نوع برگشتی تابع DAO. دلیل آن این است که حاشیه نویسی @MapColumn به جای استفاده از خود تابع مانند @MapInfo ، مستقیماً در آرگومان نوع در نوع بازگشتی یک تابع DAO استفاده می شود. برای اطلاعات بیشتر، لطفاً به مستندات @MapColumn مراجعه کنید. ( Ib0305 , b/203008711 )
  • فایل های API به روز شده برای حاشیه نویسی حذف سازگاری ( I8e87a , b/287516207 )
  • APIهای افزونه Room Gradle به‌روزرسانی شده‌اند تا همیشه به پیکربندی‌های مختلف نیاز نداشته باشند. این بدان معناست که افزونه می‌تواند یک مکان سراسری برای همه انواع بدون ایجاد دایرکتوری‌های متعدد بپذیرد، مهاجرت‌های نرم‌تری را امکان‌پذیر می‌کند، اما همچنین به اندازه کافی انعطاف‌پذیر است تا به صورت دستی طعم‌ها را پیکربندی کند یا طرح‌واره‌های نوع را بسازد در حالی که همچنان مزایای افزونه را حفظ می‌کند (ساخت‌های قابل تکرار و ذخیره‌سازی). ( 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 حاوی این commit ها است.

پلاگین Room Gradle

این نسخه جدید حاوی مصنوع جدیدی برای پلاگین Room Gradle با شناسه androidx.room است که مسائل مختلف موجود در اتاق را در رابطه با داشتن ورودی و خروجی طرحواره ها از طریق گزینه های پردازشگر حاشیه نویسی Gradle حل می کند. پلاگین Room Gradle پروژه را به گونه‌ای پیکربندی می‌کند که طرح‌واره‌های تولید شده که برای انتقال خودکار مصرف می‌شوند و خروجی وظایف کامپایل هستند، به درستی پیکربندی شوند تا ساخت‌های قابل تکرار و ذخیره‌سازی شوند. این افزونه یک DSL را برای پیکربندی مکان طرح پایه ارائه می دهد:

room {
    schemaDirectory("$projectDir/schemas/")
}

سپس این افزونه کامپایلر Room و وظایف کامپایل مختلف و باطن‌های آن (javac، KAPT، KSP) را برای خروجی فایل‌های طرحواره در پوشه‌های طعم‌دار، یعنی schemas/flavorOneDebug/com.package.MyDatabase/1.json پیکربندی می‌کند. طبق معمول، این فایل‌ها وارد مخزن می‌شوند تا برای اعتبارسنجی و انتقال خودکار استفاده شوند. پس از مهاجرت به استفاده از افزونه به جای گزینه‌های پردازشگر حاشیه‌نویسی، فایل‌های طرحواره موجود باید در فهرست‌های طعم ایجاد شده توسط افزونه کپی شوند، این یک عملیات انتقال یک بار است که باید به صورت دستی انجام شود. مستندات طرحواره در developers.android.com پس از دریافت بازخورد و پایدار ماندن افزونه در آینده به‌روزرسانی می‌شود، بنابراین لطفاً آن را امتحان کنید.

تغییرات API

  • RoomDatabase.QueryCallback به عنوان یک رابط کاربردی برای اجازه استفاده از تبدیل SAM تعریف شده است. ( Iab8ea , b/281008549 )

رفع اشکال

  • حل مشکلی که هنگام نمونه سازی پایگاه داده در Robolectric پس از انتقال منابع Room از جاوا به Kotlin ایجاد می شود. ( Ic053c , b/274924903 )
نسخه 2.6.0-alpha01

22 مارس 2023

androidx.room:room-*:2.6.0-alpha01 منتشر شد. نسخه 2.6.0-alpha01 حاوی این commit ها است.

ویژگی های جدید

  • پشتیبانی از کلاس های ارزش در Room for KSP. Room اکنون می‌تواند از کلاس‌های ارزش در Entities پشتیبانی کند. ( 4194095 )
  • تولید کد Kotlin (یا "Kotlin CodeGen") اکنون می تواند در اتاق فعال شود ( 4297ec0 ). برای روشن کردن Kotlin CodeGen در اتاق، نام گزینه room.generateKotlin را به گزینه های پردازنده خود برای KSP اضافه کنید. برای جزئیات بیشتر در مورد نحوه انتقال گزینه های پردازنده برای KSP، به مستندات KSP مراجعه کنید.

توجه: هنگام استفاده از Kotlin CodeGen، مهم است که توجه داشته باشید که محدودیت‌های اضافی اضافه شده است. ویژگی‌های انتزاعی به‌عنوان دریافت‌کننده DAO یا پرس‌وجوهای DAO در Kotlin CodeGen غیرمجاز هستند، و در عوض انتظار می‌رود که به‌عنوان توابع بازنویسی شوند تا از این تصور غلط مبنی بر اینکه مقدار ویژگی تغییرناپذیر است و یک نتیجه ذخیره شده ثابت دارد، جلوگیری شود. محدودیت دیگری که اضافه شده است این است که انواع بازگشت مجموعه Nullable دیگر در Room for Kotlin CodeGen مجاز نیستند.

هشدار: ممکن است متوجه شوید که پروژه‌های شما از نظر پوچ‌پذیری در هنگام استفاده از Kotlin CodeGen سخت‌گیرانه‌تر هستند. در Kotlin CodeGen، پوچ بودن آرگومان های نوع مهم است، در حالی که در جاوا این امر بیشتر نادیده گرفته می شود. به عنوان مثال، فرض کنید یک «جریان» دارید ` نوع بازگشت و جدول خالی است. در Java CodeGen این مشکلی ایجاد نمی کند، اما در Kotlin CodeGen با خطا مواجه می شوید. برای جلوگیری از این امر، باید از «Flow» استفاده کنید با فرض اینکه یک عدد صفر منتشر شده باشد.

تغییرات 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 حاوی این commit ها است.

رفع اشکال

  • مشکل ناسازگاری را با kotlinx-metadata-jvm برطرف کنید. ( 386d5c )
  • مشکلی را برطرف کنید که باعث می‌شود اتاق هنگام استفاده در تست روبولکتریک خطایی ایجاد کند. ( f79bea , b/274924903 )
نسخه 2.5.1 نسخه 2.5.1

22 مارس 2023

androidx.room:room-*:2.5.1 منتشر شد. نسخه 2.5.1 حاوی این commit ها است.

رفع اشکال

  • اگر پایگاه داده از قبل باز است، از بررسی دایرکتوری والد پایگاه داده در 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 شامل این commit ها است.

نسخه 2.5.0

11 ژانویه 2023

androidx.room:room-*:2.5.0 منتشر شد. نسخه 2.5.0 شامل این commit ها است.

تغییرات مهم از 2.4.0

  • تمام منابع room-runtime از جاوا به کاتلین تبدیل شده اند. توجه داشته باشید که اگر کد شما در Kotlin باشد به دلیل تبدیل کتابخانه به Kotlin ممکن است با مشکلات ناسازگاری منبع مواجه شوید. به عنوان مثال، یک تغییر ناسازگار با منبع شناخته شده این است که در InvalidationTracker اکنون باید onInvalidate() در Observer اعلام کنید تا یک پارامتر از نوع Set داشته باشید و نه MutableSet . علاوه بر این، برخی از روش‌های دریافت‌کننده به ویژگی‌هایی تبدیل شدند که به نحو دسترسی به ویژگی در فایل‌های Kotlin نیاز دارند. لطفاً در صورت وجود هرگونه ناسازگاری قابل توجه، یک اشکال را ثبت کنید.
  • یک حاشیه نویسی میانبر جدید اضافه شد، @Upsert ، که سعی می کند یک موجودیت را در صورت عدم تضاد منحصر به فرد وارد کند یا در صورت وجود تضاد، موجودیت را به روز کند. ( I7aaab , b/241964353 )
  • مصنوعات جدید room-paging room-paging-rxjava2 ، room-paging-rxjava3 و room-paging-guava برای پشتیبانی در Room Paging اضافه شده اند.
  • APIهای اضافه شده برای ارائه نام جداول کلید و مقادیر برای ابهام‌زدایی در @MapInfo ( Icc4b5 )
نسخه 2.5.0-rc01

7 دسامبر 2022

androidx.room:room-*:2.5.0-rc01 منتشر شد. نسخه 2.5.0-rc01 حاوی این commit ها است.

  • این نسخه مشابه 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?> ) به contravariant ( Array<out Any?> ) می گیرند تا با رفتار آرایه جاوا مطابقت داشته باشد، رفع کنید. ( 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 حاوی این commit ها است.

ویژگی های جدید

  • یک حاشیه نویسی میانبر جدید اضافه شد، @Upsert ، که سعی می کند یک موجودیت را در صورت عدم تضاد منحصر به فرد وارد کند یا در صورت وجود تضاد، موجودیت را به روز کند. ( I7aaab , b/241964353 )

رفع اشکال

  • اتاق اکنون یک SQLiteConstraintException به جای IllegalStateException در طول بررسی محدودیت کلید خارجی مهاجرت خودکار پرتاب می کند. ( I328dd )
  • اصلاح یک تغییر ناسازگار با منبع Kotlin برای دریافت کننده / ویژگی های getOpenHelper ، getQueryExecutor و getTransactionExecutor . ( Iad0ac )
نسخه 2.5.0-alpha02

1 ژوئن 2022

androidx.room:room-*:2.5.0-alpha02 منتشر شد. نسخه 2.5.0-alpha02 حاوی این commit ها است.

ویژگی های جدید

تغییرات API

  • تمام room-runtime از جاوا به کاتلین تبدیل شده است. ( If2069 , b/206859668 ,( Ie4b55 , b/206859668 , ( I697ee , b/206859668 , ( I96c25 , b/206859668 )

    توجه: ممکن است به دلیل تبدیل کتابخانه به 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 حاوی این commit ها است.

تغییرات API

  • مشکلی که در آن استفاده از Room @IntDef در منابع Kotlin اعمال نمی شد، برطرف شد. ( I75f41 , b/217951311 )
  • رفع مشکل سازگاری منبع برای اجازه مجدد @Query در دریافت‌کنندگان ویژگی. ( I0a09b )
  • تبدیل اتاق مشترک از جاوا به کاتلین. ( I69c48 , b/206858235 )

    توجه: ممکن است با مشکلات ناسازگاری منبع مواجه شوید زیرا برخی از ویژگی‌ها در طول تبدیل کتابخانه به Kotlin به اشیاء همراه منتقل شده‌اند. اگر کد شما در Kotlin بود و نسخه قدیمی Room را فراخوانی می کرد، نسخه جدید هنگام دسترسی به این ویژگی ها به پسوند ".Companion" نیاز دارد.

  • تبدیل اتاق - مهاجرت از جاوا به کاتلین. ( I2724b , b/206858622 )
  • فایل های مربوط به paging در room-runtime از جاوا به کاتلین تبدیل کرد. ( 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 حاوی این commit ها است.

رفع اشکال

  • رفع مشکلی که باعث می‌شد اتاق عملکردهای تعلیق را در Kotlin 1.7 تشخیص ندهد ( b/236612358 )
نسخه 2.4.2 نسخه 2.4.2

23 فوریه 2022

androidx.room:room-*:2.4.2 منتشر شد. نسخه 2.4.2 حاوی این commit ها است.

رفع اشکال

  • مشکل ایجاد کد برای تابع تعلیق Dao @Transaction را با بدنه ای که یک روش رابط پیش فرض را به دلیل کامپایل با -Xjvm-default=all یا معادل آن ایجاد می کند، برطرف کنید. ( Ia4ce5 )
  • رفع اشکالی که در آن Room کدی را برای روش پرس و جو نوع بازگشت Array<ByteArray> تولید می کند. ( If086e , b/213789489 )
نسخه 2.4.1 نسخه 2.4.1

12 ژانویه 2022

androidx.room:room-*:2.4.1 منتشر شد. نسخه 2.4.1 حاوی این commit ها است.

رفع اشکال

  • پشتیبانی از ویژگی های داخلی در منابع Kotlin اضافه شده است. این یک تغییر رفتار جزئی در اتاق است که در آن از نام منبع توابع استفاده می‌کند در حالی که آنها را با ویژگی‌ها به‌عنوان گیرنده/تنظیم تطبیق می‌دهد (قبلاً از نام JVM تابع استفاده می‌کرد که برای توابع/ویژگی‌های داخلی متفاوت است). اگر از حاشیه‌نویسی‌های سفارشی @JvmName برای تطبیق گیرندگان/ستترها با ویژگی‌های خصوصی استفاده می‌کنید، لطفاً کد ایجاد شده را پس از به‌روزرسانی دوباره بررسی کنید ( If6531 ، b/205289020 )
نسخه 2.4.0 نسخه 2.4.0

15 دسامبر 2021

androidx.room:room-*:2.4.0 منتشر شد. نسخه 2.4.0 حاوی این commit ها است.

تغییرات مهم از 2.3.0

  • انتقال خودکار : اتاق اکنون یک API برای ایجاد خودکار مهاجرت ها تا زمانی که طرحواره ها صادر می شوند ارائه می دهد. برای اینکه اتاق بداند که باید یک انتقال خودکار ایجاد کند، می‌توان از ویژگی جدید @Database#autoMigrations برای اعلام نسخه‌ها برای انتقال خودکار از و به آن استفاده کرد. هنگامی که Room به اطلاعات اضافی در مورد تغییر نام یا حذف جدول ها و ستون ها نیاز دارد، حاشیه نویسی @AutoMigration می تواند یک کلاس مشخصات حاوی چنین ورودی هایی را اعلام کند. برای جزئیات بیشتر به اسناد @AutoMigration مراجعه کنید.
  • تزریق وابستگی در انتقال خودکار : @ProvidedAutoMigrationSpec یک API جدید برای اعلام این است که AutoMigrationSpec در زمان اجرا از طریق RoomDatabase.Builder#addAutoMigrationSpec() ارائه می شود. این به یک چارچوب تزریق وابستگی اجازه می دهد تا چنین مشخصاتی را در مواقعی که به وابستگی های پیچیده نیاز دارند ارائه دهد.
  • Migration Test Helper Support for Auto Migrations : MigrationTestHelper اتاق با ارائه یک API سازنده جدید که کلاس پایگاه داده تحت آزمایش را دریافت می کند، برای پشتیبانی از مهاجرت خودکار به روز شد. این به کمک کننده اجازه می دهد تا به طور خودکار مهاجرت های خودکار را به همان روش در طول runMigrationsAndValidate اضافه کند.
  • پشتیبانی Room-Paging : androidx.room:room-paging منتشر شده است، که پشتیبانی بومی Paging 3.0 را برای درخواست های اتاق که androidx.paging.PagingSource را برمی گرداند، ارائه می دهد.
  • روش‌های پرس و جو رابطه‌ای : اتاق اکنون از روش‌های بازگشت چند نقشه‌ای @Dao پشتیبانی می‌کند که برای عبارات JOIN مفید است. انواع پشتیبانی شده چند نقشه عبارتند از Map ، SparseArray ، LongSparseArray ، همراه با Guava's ImmutableMap ، ImmutableSetMultimap و ImmutableListMultimap .
نسخه 2.4.0-rc01

1 دسامبر 2021

androidx.room:room-*:2.4.0-rc01 منتشر شد. نسخه 2.4.0-rc01 حاوی این commit ها است.

ویژگی های جدید

  • برای پشتیبانی از Kotlin 1.6، وابستگی اتاق به KSP را به 1.6.0-1.0.1 به روز کنید.
نسخه 2.4.0-beta02

17 نوامبر 2021

androidx.room:room-*:2.4.0-beta02 منتشر شد. نسخه 2.4.0-beta02 حاوی این تعهدات است.

ویژگی های جدید

  • ما پشتیبانی از SparseArray و LongSparseArray را در MapInfo@ اضافه کرده‌ایم. ( Ic91a2 b/138910317 )

رفع اشکال

  • ما یک تحلیلگر TypeConverter جدید اضافه کرده ایم که اطلاعات پوچ پذیری را در انواع مختلف در نظر می گیرد. از آنجایی که این اطلاعات فقط در KSP موجود است، به طور پیش فرض فقط در KSP روشن است. اگر مشکلی ایجاد کرد، می توانید با عبور room.useNullAwareTypeAnalysis=false به پردازنده حاشیه نویسی آن را خاموش کنید. اگر این اتفاق افتاد، لطفاً یک اشکال فایل را وارد کنید زیرا این پرچم در آینده حذف خواهد شد. با این آنالایزر TypeConverter جدید، پیشنهاد می شود فقط TypeConverter های دریافت کننده غیر تهی را ارائه دهید زیرا آنالایزر جدید این توانایی را دارد که آنها را با چک تهی بپیچد. توجه داشته باشید که این برای کاربرانی که از KAPT یا جاوا به عنوان پردازشگر حاشیه نویسی استفاده می کنند (برخلاف KSP)، هیچ گونه اطلاعات پوچ پذیری در انواع ندارند، تأثیری ندارد. ( Ia88f9 , b/193437407 )
  • هنگامی که یک نهاد FTS اعلام کرد که از نشانه‌ساز ICU استفاده می‌کند، باگی را که در آن Room با خطای SQL کامپایل نمی‌شود، برطرف کنید. ( I00db9 , b/201753224 )
  • حل مشکل در انتقال خودکار مربوط به ستون جدیدی که به یک موجودیت جاسازی شده بین نسخه ها اضافه شده است. ( I5fcb1 b/193798291 )
  • ما مشکلی را در مورد انواع برگشت روش پرس و جوی رابطه ای در جستارهای LEFT JOIN حل کرده ایم. با این تغییرات، در صورتی که نگاشت 1-many وجود داشته باشد، مجموعه ای که برای یک کلید برگردانده می شود، اگر در مکان نما یافت نشود، شی مقدار نامعتبر را شامل نمی شود. اگر مقادیر معتبری یافت نشد، یک کلید به یک مجموعه خالی نگاشت می شود. ( ID5552 b/201946438 )
  • مشکل انتقال خودکار که در آن کلمات کلیدی SQLite در نام ستون‌ها حذف نشدند، حل شد. ( Idbed4 b/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 اضافه کرد تا توسعه دهندگان مبدل های داخلی و 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>
  • هنگام استفاده از Paging3 با اتاق room-paging یک مصنوعات مورد نیاز تبدیل کنید. ( ieaffe )

رفع اشکال

  • مسئله ای را برطرف کنید که در آن نتایج نمایش داده شدگان چند منظوره به درستی سفارش داده نشد ، هنگامی که پرس و جو حاوی ترتیب بند یک ستون از کلید نقشه بود. ( i6b887 )

مشارکت خارجی

  • API جدید برای مشخص کردن ترتیب فهرست در index اضافه شده است. با تشکر از نیکیتا ژلونکین. ( i033fc )
نسخه 2.4.0-alpha04

21 جولای 2021

androidx.room:room-*:2.4.0-alpha04 منتشر می شود. نسخه 2.4.0-alpha04 شامل این تعهدات است.

ویژگی های جدید

  • اکنون اتاق از انواع بازگشت چند منظوره روشهای @Dao پشتیبانی می کند ، برای اظهارات پیوستن مفید است. انواع پشتیبانی شده از multimaps Map به همراه ImmutableMap Guava ، ImmutableSetMultimap و ImmutableListMultimap است.

    موارد زیر نمونه هایی از نمایش داده های چند منظوره است:

    نقشه رابطه یک به یک

    @Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId")
    fun getSongAndArtist(): Map<Song, Artist>
    

    نقشه رابطه یک به بسیاری (Multimap استاندارد)

    @Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId")
    fun getArtistAndAlbums(): Map<Artist, List<Album>>
    

    نتیجه Multimap همچنین می تواند در انواع برگشتی ASYNC پشتیبانی شده مانند LiveData ، Observable RX یا Flow Coroutines پیچیده شود.

در صفحه نمایش

  • androidx.room:room-paging منتشر شد و پشتیبانی از صفحه بندی بومی 3.0 برای پرس و جوهای اتاق بازگشت androidx.paging.PagingSource فراهم می کند.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun loadUsers(): PagingSource<Int, User>
    }
    
  • این مصنوعات جایگزین اجرای androidx.paging.PagingSource توسط اتاق با یک ساخته شده در بالای API های صفحه بندی 3.0 می شود. کلیدهای جدید اجرای PagingSource متفاوت است ، بنابراین هر کلید دستی که به صورت دستی به صفحه نمایش اتاق ارائه می شود ، نیاز به تغییر این رفتار دارد ، از جمله کلید اولیه که از طریق سازنده پیجر منتقل می شود. صفحات بارگیری از Key را با Key اولین مورد بارگذاری شده شروع می کنند. این از رفتار موجود منحرف می شود که در آن LoadParams.Refresh.Key به عنوان موقعیت پیمایش کاربر و موارد قبل و بعد از کلید بارگیری می شود.

  • مصنوعات اختیاری است و از حمایت موجود برای پشتیبانی از Paging 3.0 که در اتاق 2.3 معرفی شده است ، عقب نشینی می کند. با این حال ، این مصنوعات در انتشار آینده برای کسانی که از اتاق با صفحه بندی 3.0 استفاده می کنند ، غیر اداری خواهد شد. برای انتخاب ، آثار جدید صفحه بندی اتاق را به ClassPath خود اضافه کنید. اگر از Gradle استفاده می کنید ، می توانید قطعه زیر را به Build.gradle اضافه کنید:

    dependency {
      implementation("androidx.room:room-paging:2.4.0-alpha04")
    }
    

رفع اشکال

  • مسئله ای را در مهاجرت خودکار در مورد رسیدگی به نقض کلیدهای خارجی برطرف کنید. ( b/190113935 )
نسخه 2.4.0-alpha03

16 ژوئن 2021

androidx.room:room-*:2.4.0-alpha03 منتشر می شود. نسخه 2.4.0-alpha03 شامل این تعهدات است.

تغییرات API

  • با ارائه API سازنده جدید که کلاس پایگاه داده را تحت آزمایش دریافت می کند ، MigrationTestHelper را به روز کنید. این به یاور اجازه می دهد تا به طور خودکار مهاجرت های خودکار را به همان روش در هنگام runMigrationsAndValidate اضافه کند.

رفع اشکال

  • برای پشتیبانی از تراشه های M1 اپل ، مسئله ای را با کتابخانه بومی SQLite Room برطرف کرد. ( 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 s که در آن به درستی ایجاد نشده است.

مشارکت خارجی

  • مسئله ای را در JournalMode.TRUNCATE Room حل کنید. در جایی که پاسخ به تماس InvalidationTracker گاهی اوقات نامعتبر است ، خیلی دیر ، یا اصلاً. با تشکر از Uli Bubenheimer | bubenheimer@users.noreply.github.com ( b/154040286 )
نسخه 2.4.0-alpha01

21 آوریل 2021

androidx.room:room-*:2.4.0-alpha01 منتشر می شود. نسخه 2.4.0-alpha01 شامل این تعهدات است.

ویژگی های جدید

  • مهاجرت های خودکار : اتاق اکنون 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 to string و برعکس از نوع مبدل در صورت عدم ارائه. اگر یک مبدل نوع برای یک enum در حال حاضر وجود داشته باشد ، اتاق با استفاده از آن از پیش فرض اولویت بندی می شود.
  • پرس و جو پرس و جو : اتاق اکنون یک برنامه پاسخگویی عمومی API RoomDatabase.QueryCallback را ارائه می دهد ، زیرا در هنگام اجرای نمایش داده شد ، که می تواند برای ورود به سیستم در ساخت اشکال مفید باشد. پاسخ به تماس را می توان از طریق RoomDatabase.Builder#setQueryCallback() تنظیم کرد.
  • بهبود از پیش بسته بندی شده : اتاق اکنون دارای API برای ایجاد یک پایگاه داده با استفاده از یک پایگاه داده از پیش بسته بندی شده است که از یک جریان ورودی خوانده می شود. این امکان را برای مواردی مانند زمانی که پایگاه داده قبل از بسته بندی شده است امکان پذیر می کند.
  • مبدل های نوع ارائه شده : اتاق اکنون دارای API هایی برای ارائه نمونه هایی از مبدل های نوع است به گونه ای که برنامه بتواند اولیه سازی آنها را کنترل کند. برای علامت گذاری یک مبدل نوع که برای اتاق ارائه می شود از حاشیه نویسی جدید providedtypeconverter استفاده کنید.
  • پشتیبانی rxjava3 : اتاق اکنون از انواع Rxjava3 پشتیبانی می کند. مشابه Rxjava2 می توانید روشهای DAO را که نوع بازگشت آنها قابل جریان ، مجرد ، شاید و قابل تکمیل است ، اعلام کنید. علاوه بر این ، یک Artifact جدید androidx.room:room-rxjava3 برای پشتیبانی از Rxjava3 در دسترس است.
  • پشتیبانی صفحه بندی 3.0 : اتاق اکنون از ایجاد پیاده سازی برای روشهای حاشیه نویسی @Query پشتیبانی می کند که نوع بازگشت آن androidx.paging.PagingSource است.
نسخه 2.3.0-RC01

24 مارس 2021

androidx.room:room-*:2.3.0-rc01 منتشر شد. نسخه 2.3.0-RC01 شامل این تعهدات است.

رفع اشکال

  • مسئله ای را برطرف کنید که مانع از نمایش داده های جریان Coroutine ایجاد شده توسط اتاق در یک بلوک تعلیق withTransaction انتقال شود. ( i797bf )
نسخه 2.3.0-beta03

10 مارس 2021

androidx.room:room-*:2.3.0-beta03 منتشر می شود. نسخه 2.3.0-beta03 شامل این تعهدات است.

ویژگی های جدید

  • پشتیبانی از تدوین افزایشی برای KSP اضافه شده است. ( I031C1 ، B/176453350 )

رفع اشکال

  • رفع اشکال در جایی که ایجاد PagingSource روی موضوع اصلی می تواند باعث ایجاد ANR شود. ( i42b74 ، b/181221318 )
  • ثابت @ExperimentalRoomApi به جای بسته بندی خصوصی ، عمومی است. ( b/181356119 )

مشارکت خارجی

  • به اتاق اجازه دهید یک نوع بازگشت POJO را در روش DAO حاشیه نویسی @Query Annotated بپذیرد ، همچنین با @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 اجرا کند و زمان ساخت را به میزان قابل توجهی کاهش می دهد.

    برای استفاده از اتاق با KSP ، می توانید افزونه KSP Gradle را اعمال کرده و پیکربندی kapt را در پرونده ساخت خود با ksp جایگزین کنید. به عنوان مثال ، به جای kapt 'androidx.room:room-compiler:2.3.0-beta02' از ksp 'androidx.room:room-compiler:2.3.0-beta02' استفاده کنید. برای اطلاعات بیشتر به اسناد KSP مراجعه کنید.

    توجه داشته باشید که از آنجا که KSP تجربی است ، توصیه می شود هنوز هم از KAPT برای کد تولید استفاده کنید. کاهش زمان ساخت فقط در صورتی قابل استفاده است که هیچ پردازنده دیگری که از KAPT استفاده می کنند وجود ندارد. برای موضوعات شناخته شده به B/160322705 مراجعه کنید.

نسخه 2.3.0-beta01

27 ژانویه 2021

androidx.room:room-*:2.3.0-beta01 منتشر شد. نسخه 2.3.0-beta01 شامل این تعهدات است.

ویژگی های جدید

  • پایگاه داده های بسته شدن خودکار : اتاق اکنون توانایی بستن پایگاه داده هایی را دارد که پس از مدت زمان مشخصی به آنها دسترسی پیدا نمی کنند. این یک ویژگی آزمایشی است و با فراخوانی 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 شامل این تعهدات است.

ویژگی های جدید

  • اتاق اکنون یک RoomDatabase.QueryCallback عمومی API API را ارائه می دهد. پاسخ به تماس را می توان از طریق RoomDatabase.Builder#setQueryCallback() تنظیم کرد. ( IAA513 ، B/174478034 ، B/74877608 )
  • در صورت ارائه هیچکدام ، اتاق به طور پیش فرض برای استفاده از enum to string و برعکس نوع مبدل. اگر یک مبدل نوع برای یک enum در حال حاضر وجود داشته باشد ، اتاق با استفاده از آن از پیش فرض اولویت بندی می شود. ( b/73132006 )

موضوع شناخته شده

  • اگر یک مبدل یک طرفه برای خواندن از قبل برای enum وجود داشته باشد ، اتاق ممکن است به طور تصادفی از رشته داخلی برای مبدل enum که ممکن است مورد نظر نباشد استفاده کند. این یک مسئله شناخته شده است و می توان آن را با تبدیل کننده دو طرفه برطرف کرد. نگاه کنید به: b/175707691

رفع اشکال

  • مسئله ای را برطرف کرد که در آن اتاق به طور نادرست پردازش حاشیه نویسی افزایشی را در نسخه های جدیدتر JDK غیرفعال کند. ( b/171387388 )
  • هنگام استفاده از لودرهای کلاس چند کلاس ، مسئله پیدا کردن کلاس تولید شده را برطرف کرد. با تشکر از Fix 'Serendipity | 892449346@qq.com '! ( b/170141113 )
  • هنگامی که یک @Dao دارای یک کلاس پایه بود که ژنرال های آن در JVM ابتدایی است ، مسئله ای را ایجاد می کند. ( b/160258066 )

مشارکت خارجی

  • در صورت فعال بودن حالت WAL و API 16 یا بیشتر ، اتاق به طور پیش فرض برای استفاده از beginTransactionNonExclusive پیش فرض خواهد شد. با تشکر از 'احمد اول خلیل | 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 برای ایجاد یک پایگاه داده با استفاده از یک پایگاه داده از پیش بسته بندی شده از یک جریان ورودی است. این امکان را برای مواردی مانند زمانی که پایگاه داده قبل از بسته بندی شده است امکان پذیر می کند. با تشکر از "احمد ال-هلو hmedre@gmail.com " ( 3E6792 ، b/146911060 )

تغییرات API

  • هدف از دست رفته را به حاشیه نویسی @ForeignKey اضافه کرد و از استفاده از آن در خارج از حاشیه نویسی @Entity جلوگیری کرد. ( iced1e )

  • میدان mCallbacks در RoomDatabase.java اکنون پنهان است. ( d576cb ، b/76109329 )

رفع اشکال

  • برای روشن شدن این نکته که TypeConverters فقط می تواند برای تبدیل ستون ها / زمینه ها و نه ردیف ها استفاده شود ، به روز رسانی را به روز کنید. ( I07C56 ، B/77307836 )

  • برای رفع خطای کامپایلر در DAO با یک نوع فوق العاده عمومی با "بدوی" های Kotlin ، به Daoprosessor بروزرسانی کنید. ( ICE6BB ، B/160258066 )

  • به روزرسانی مستندات روشهای Observer را برای روشن کردن موضوع اضافه کنید/حذف کنید ( IFD1D9 ، B/153948821 )

  • با تأیید نادرست در جداول FTS که ستون ROWID خود را اعلام کردند ، مسئله ای را حل کنید. ( D62EBC ، B/145858914 )

کمک های خارجی

  • مسائل محلی محلی/کوچک مربوط به ترکیه ( 5746e3 ) ، b/68159494 را برطرف کنید

  • برای جلوگیری از بروز مشکلات موجود در Lollipop Android ( D1CFC7 ، B/162431855 ) ، ConcurrentHashMap را در داخل RoomDatabase با Collections.synchronizedMap()

  • هنگام کپی کردن DB بسته بندی شده ، یک پاسخ به تماس onopenpackagedDatabase اضافه کنید. ( i1ba74 ، b/148934423 )

نسخه 2.3.0-alpha02

22 جولای 2020

androidx.room:room-*:2.3.0-alpha02 :2.3.0-alpha02 منتشر می شود. نسخه 2.3.0-alpha02 شامل این تعهدات است.

ویژگی های جدید

  • پشتیبانی rxjava3 : اتاق اکنون از انواع Rxjava3 پشتیبانی می کند. مشابه Rxjava2 می توانید روشهای DAO را که نوع بازگشت آنها قابل جریان ، مجرد ، شاید و قابل تکمیل است ، اعلام کنید. علاوه بر این ، یک Artifact جدید androidx.room:room-rxjava3 برای پشتیبانی از Rxjava3 در دسترس است. ( b/152427884 )

تغییرات API

  • اکنون اعلام @TypeConverter در کلاس Object Kotlin پشتیبانی می شود. ( b/151110764 )
  • گزینه پردازش حاشیه نویسی افزایشی اتاق اکنون به طور پیش فرض روشن است. ( b/112110217 )
نسخه 2.3.0-alpha01

10 ژوئن 2020

androidx.room:room-*:2.3.0-alpha01 منتشر می شود. نسخه 2.3.0-alpha01 شامل این تعهدات است.

ویژگی های جدید

  • پشتیبانی صفحه بندی 3.0 : اتاق اکنون از ایجاد پیاده سازی برای روشهای حاشیه نویسی @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 را که برای فعال کردن پردازنده حاشیه نویسی افزایشی استفاده می شود ، تشخیص نمی دهد. با تشکر از Blaz 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 شامل این تعهدات است.

رفع اشکال

  • MultiInstanceInvalidationService DirectBootaware را بسازید. با تشکر از 'myGod contact-git@mygod.be ' ( b/148240967 )
  • رفع اشکالی که باعث خرابی در هنگام فعال شدن بی اعتبار بودن چند منظوره و پایگاه داده حاوی یک موجودیت FTS می شود. ( b/148969394 )
  • هنگام بارگذاری کتابخانه های بومی SQLite در پردازنده حاشیه نویسی اتاق که باعث می شود کامپایلر به دلیل تدوین موازی سقوط کند ، مسئله ای را برطرف کرد. ( 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 در کوتلین عملکرد بتونی داشت ، مسئله ای را ایجاد می کند. ( 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 ردیف باعث می شود جایی برای بازگشت موارد مربوط به تهی باشد. ( b/143105450 )
نسخه 2.2.1 نسخه 2.2.1

23 اکتبر 2019

androidx.room:room-*:2.2.1 منتشر می شود. نسخه 2.2.1 شامل این تعهدات است .

رفع اشکال

  • رفع اشکال در جایی که اتاق به طور نادرست در مورد CURSOR_MISMATCH با گزینه کامپایلر expandProjection می یابد ، هشدار می دهد. ( b/140759491 )
  • مکانیسم آزمایش مجدد برای رسیدگی به کتابخانه بومی مفقود شده که برای تأیید نمایش داده شد در زمان کامپایل استفاده می شود.
نسخه 2.2.0 نسخه 2.2.0

9 اکتبر 2019

androidx.room:room-*:2.2.0 منتشر می شود. نسخه 2.2.0 شامل این تعهدات است .

تغییرات مهم از نسخه 2.1.0

  • پایگاه داده از پیش بسته بندی شده : دو API جدید در RoomDatabase.Builder اکنون با توجه به یک فایل پایگاه داده از قبل پرجمعیت ، برای ایجاد یک RoomDatabase در دسترس هستند. createFromAsset() برای زمانی است که پرونده پایگاه داده از پیش جمع شده در پوشه دارایی های APK قرار دارد ، در حالی که createFromFile() برای زمانی است که پرونده در یک مکان دلخواه قرار دارد. استفاده از این API رفتار مهاجرت های مخرب را به گونه ای تغییر می دهد که در حین مهاجرت برگشتی ، اتاق سعی خواهد کرد که در صورت وجود ، پایگاه داده از پیش جمع شده را مجدداً کپی کند ، در غیر این صورت فقط رها کردن و دوباره ایجاد همه جداول است. 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
  • جریان Coroutines : روشهای @Query DAO اکنون می توانند از نوع بازگشت Flow<T> باشند. اگر جداول مشاهده در پرس و جو بی اعتبار شود ، جریان برگشتی دوباره مجموعه ای از مقادیر را دوباره منتشر می کند. اعلام یک عملکرد DAO با یک Channel<T> نوع بازگشت یک خطا است ، در عوض اتاق شما را ترغیب می کند تا Flow استفاده کنید و سپس از توابع همسایه برای تبدیل Flow به یک Channel استفاده کنید. b/130428884
  • پردازنده حاشیه نویسی افزایشی Gradle : اتاق اکنون یک پردازنده حاشیه نویسی جداسازی درجه یک است و قابلیت افزایش را می توان از طریق room.incremental گزینه پردازنده فعال کرد. برای اطلاعات بیشتر به گزینه های کامپایلر اتاق مراجعه کنید. اگر با هر مشکلی روبرو شدید ، لطفاً در اینجا اشکال دهید. ما قصد داریم قابلیت افزایش را به طور پیش فرض در نسخه آینده و پایدار فعال کنیم. b/112110217
  • در حال گسترش پیش بینی ها : یک room.expandProjection گزینه جدید کامپایلر آزمایشی. expandprojection اضافه شده است که باعث می شود اتاق بازنویسی یک پرس و جو با یک پیش بینی ستاره فقط شامل ستون های موجود در نوع بازگشت شود. به عنوان مثال ، برای یک روش 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 پس از مدت زمان مشخصی از بازگرداندن مقادیر جدید جلوگیری می کند. ( b/139175786 )
  • رفع اشکال در جایی که اتاق در هنگام باز کردن یک پایگاه داده که از اتاق 1.0 مهاجرت نکرده است ، یک کد هش میراث را قبول نمی کند و باعث سقوط زمان به دلیل طرحواره نامعتبر می شود. ( b/139306173 )
نسخه 2.2.0-alpha02

7 آگوست 2019

androidx.room:room-*:2.2.0-alpha02 منتشر می شود. تعهدات موجود در این نسخه را می توان در اینجا یافت.

ویژگی های جدید

  • جریان Coroutines : روشهای @Query DAO اکنون می توانند از نوع بازگشت Flow<T> باشند. اگر جداول مشاهده در پرس و جو بی اعتبار شود ، جریان برگشتی دوباره مجموعه ای از مقادیر را دوباره منتشر می کند. اعلام یک عملکرد DAO با یک Channel<T> نوع بازگشت یک خطا است ، در عوض اتاق شما را ترغیب می کند تا Flow استفاده کنید و سپس از توابع همسایه برای تبدیل Flow به یک Channel استفاده کنید. b/130428884
  • در حال گسترش پیش بینی ها : یک room.expandProjection گزینه جدید کامپایلر آزمایشی. expandprojection اضافه شده است که باعث می شود اتاق بازنویسی یک پرس و جو با یک پیش بینی ستاره فقط شامل ستون های موجود در نوع بازگشت شود. به عنوان مثال ، برای یک روش DAO با @Query("SELECT * FROM Song") که یک Pojo به نام SongIdAndTitle را با تنها دو قسمت برمی گرداند. سپس اتاق برای SELECT id, title FROM Song پرس و جو را بازنویسی می کند ، به طوری که حداقل مجموعه ستون ها برای برآورده کردن نوع بازگشت ، به دست می آید. این اساساً هشدار CURSOR_MISMATCH را که هنگام پرس و جو ستون های اضافی را باز می گرداند که با هیچ زمینه ای در نوع pojo بازگشت مطابقت ندارند ، از بین می برد.
  • onDestructiveMigrate یک API پاسخ به تماس جدید است که به RoomDatabase.Callback داده می شود. b/79962330

رفع اشکال

  • رفع اشکال در جایی که اتاق هنگام محافظت از این زمینه ، کد نادرست را با استفاده از یک روش به عنوان تنظیم کننده زمینه ایجاد می کند. b/136194628
  • رفع اشکالی که باعث شد NPE در یک فرآیند دوم NPE را در هنگام فعال کردن عدم اعتبار چندگانه و سرویس باطل کشته شود ، یک NPE را در یک فرآیند دوم پرتاب کند. b/137454915
  • رفع اشکال در جایی که اتاق به درستی نوع بازگشت یک عملکرد معلق وراثت را که با @RawQuery حاشیه نویسی شده است ، مشخص نمی کند. b/137878827
  • هنگامی که کلید مربوطه از نوع حباب برای استفاده از یک ByteBuffer است که قابل مقایسه است ، کد تولید شده را برای @Relation به روز کرد. b/137881998
  • رفع اشکال در جایی که اتاق از تنظیم کننده های گمشده در Pojos که به عنوان پارامترهای موجودیت جزئی از @Insert ، @Update و @Delete استفاده می شود ، شکایت می کند. b/138664463
  • رفع اشکال در جایی که اتاق در هنگام استفاده از کلاس موجودیت در روشهای خاص DAO ، از دریافت کننده و تنظیم کننده های گمشده برای یک ستون نادیده گرفته شده از طریق @Entity شکایت می کند. b/138238182
  • رفع اشکال در جایی که اتاق به درستی نمی تواند Args Binding را به استدلال های موقعیتی تبدیل کند و باعث ایجاد یک استثناء زمان در هنگام اجرای یک پرس و جو با پارامترهای استفاده مجدد شود. 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.incremental گزینه پردازنده فعال کرد. برای اطلاعات بیشتر به گزینه های کامپایلر اتاق مراجعه کنید. اگر با هر مشکلی روبرو شدید ، لطفاً در اینجا اشکال دهید. ما قصد داریم قابلیت افزایش را به طور پیش فرض در نسخه آینده و پایدار فعال کنیم. b/112110217

رفع اشکال

  • هنگامی که جریان RX یک پرس و جو قبل از اتمام پرس و جو از بین رفته است ، دیگر اتاق را به کنترل کننده خطای جهانی EmptySetResultException نمی کند. 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 پشتیبانی می کند.
  • Couroutines : روش های DAO اکنون می توانند توابع را به حالت تعلیق درآورند. برای استفاده از این قابلیت room-ktx در وابستگی های خود قرار دهید. Artifact KTX همچنین عملکرد پسوند RoomDatabase.withTransaction را برای انجام معاملات پایگاه داده در یک Coroutine فراهم می کند.
  • ارزش خودکار : اتاق اکنون از اعلام کلاسهای حاشیه نویسی Autovalue به عنوان نهادها و pojos پشتیبانی می کند. یادداشت های اتاق @PrimaryKey ، @ColumnInfo ، @Embedded و @Relation اکنون می توانند در روشهای انتزاعی کلاس حاشیه نویسی با ارزش خودکار اعلام شوند. توجه داشته باشید که این حاشیه نویسی نیز باید با @CopyAnnotations همراه باشد تا اتاق به درستی آنها را درک کند.
  • پشتیبانی اضافی ASYNC : روشهای DAO با @Insert ، @Delete یا @Update حاشیه نویسی شده است ، به همراه @Query حاوی بیانیه های INSERT ، DELETE یا UPDATE ، اکنون از انواع بازگشت RX Completable ، Single ، Maybe و نوع ListenableFuture گواوا پشتیبانی می کنند ، و همچنین می توانند توابع تعلیق باشید.
  • enableMultiInstanceInvalidation یک API جدید در RoomDatabase.Builder است تا بتواند با استفاده از همان فایل پایگاه داده ، در چندین مورد از roomDatabase بی اعتبار شود.
  • fallbackToDestructiveMigrationOnDowngrade یک API جدید در RoomDatabase.Builder است که در صورت کاهش یک کاهش ، به طور خودکار دیتابیس را ایجاد می کند.
  • ignoredColumns یک API جدید در حاشیه نویسی @Entity است که می تواند برای لیست زمینه های نادیده گرفته شده با نام استفاده شود.
  • اکنون اتاق به درستی از سازنده اصلی کوتلین در کلاسهای داده استفاده می کند و از نیاز به اعلام خواص به عنوان vars جلوگیری می کند.
نسخه 2.1.0-RC01

29 مه 2019

رفع اشکال

  • خطای اولیه سازی اتاق را برطرف کرد که ممکن است به دلیل پیکربندی TEMP_STORE از قبل تنظیم شده رخ دهد. b/132602198
  • یک هشدار استفاده از نقل قول مضاعف برای کاربران با SQLITE 3.27.0 و بالاتر. b/131712640
  • رفع اشکال در جایی که InvalidationTracker باعث خرابی در هنگام بررسی چندین چک بی اعتبار می شود به صورت موازی. b/133457594
نسخه 2.1.0-beta01

7 مه 2019

androidx.room 2.1.0-beta01 بدون تغییر از 2.1.0-alpha07 منتشر شده است. تعهدات موجود در این نسخه را می توان در اینجا یافت.

نسخه 2.1.0-alpha07

25 آوریل 2019

API / رفتار تغییر می کند

  • عملکرد پسوند RoomDatabase.withTransaction تغییر یافته است تا دیگر یک بلوک عملکردی با یک CoroutineScope به عنوان گیرنده استفاده نکنید. این مانع از پرش از بسته بندی اضافی coroutineScope { } مورد نیاز برای اجرای کارها در بلوک معامله به طور همزمان می شود.

رفع اشکال

  • رفع اشکال در جایی که اتاق نتواند با یک typeConverter برای یک عملکرد Kotlin DAO حاوی یک پارامتر از نوع مجموعه مطابقت داشته باشد. b/122066791
نسخه 2.1.0-alpha06

22 مارس 2019

API / رفتار تغییر می کند

  • نمایش داده های معامله ASYNC اکنون به گونه ای سریال شده است که اتاق بیش از یک موضوع برای اجرای معاملات پایگاه داده استفاده نمی کند. RoomDatabase.Builder.setTransactionExecutor(Executor) اضافه شد تا پیکربندی مجری برای معاملات استفاده شود.
  • RoomDatabase.runInTransaction(Callable) دیگر استثنائات را در RuntimeExceptions بررسی نمی کند. b/128623748

رفع اشکال

  • در صورت اضافه شدن ناظران برای جدول محتوا و یک جدول FTS محتوای خارجی ، یک اشکال را برطرف کرد که در آن ردیاب بی اعتبار ، مشاهده جدول محتوا را متوقف می کند. b/128508917
  • گرامر SQLITE اتاق به روز شده برای مطابقت با SQLITE 3.24.0. b/110883668
نسخه 2.1.0-alpha05

13 مارس 2019

ویژگی های جدید

  • عملکرد فرمت RoomDatabase.withTransaction به شما امکان می دهد تا با خیال راحت معاملات پایگاه داده را در یک Coroutine انجام دهید. توابع برنامه های افزودنی اتاق به همراه پشتیبانی Coroutines در مصنوعات room-ktx موجود است.
  • روشهای DAO غیر انتزاعی که با @Transaction حاشیه نویسی شده است ، اکنون می تواند توابع را به حالت تعلیق درآورد. b/120241587

API / رفتار تغییر می کند

  • Coroutines Artifact room-coroutines به دنبال نامگذاری مشابه سایر آثار باستانی Androidx به room-ktx تغییر نام داده است.
  • beginTransaction ، setTransactionSuccessful و endTransaction در RoomDatabase به نفع runInTransaction و عملکرد پسوند room-ktx withTransaction کاهش یافته است.

رفع اشکال

  • در صورت ساده بودن توکن ساز ، یک اشکال را برطرف کرد که در آن آرگومان های توکینر از بین می روند. b/125427014
  • رفع اشکال در جایی که اتاق نتواند به درستی توابع تعلیق را با پارامترهایی که نوع آن یک کلاس داخلی بود ، شناسایی کند. b/123767877
  • رفع اشکال در جایی که روش dao @Query تعویق افتاده با INSERT ، UPDATE یا DELETE اظهارات با اشتیاق در حال آماده سازی پرس و جو در موضوع اصلی بود. b/123695593
  • رفع اشکالات مختلف که در آن اتاق می تواند کد نادرست را برای برخی از عملکردهای معلق ایجاد کند. B/123466702 و B/123457323
  • رفع اشکال در جایی که استفاده مستهجن از روشها به درستی در کد تولید شده سرکوب نشده است. 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 ، می تواند انواع Async را Single ، Mayble ، Completable و ListenableFuture بازگرداند. علاوه بر این ، آنها همچنین می توانند توابع را به حالت تعلیق درآورند. b/120227284

API / رفتار تغییر می کند

  • اگر یک روش DAO غیر انتزاعی که با @Transaction حاشیه نویسی شده است ، یک نوع ansync مانند Single ، Mayble ، Completable ، LiveData یا ListenableFuture را برمی گرداند ، اکنون خطایی ایجاد می کند. Since transactions are thread confined it is currently impossible for Room to begin and end a transaction around a function that may peform queries in different threads. b/120109336
  • OnConflictStrategy.FAIL and OnConflictStrategy.ROLLBACK have been @Deprecated since they do not behave as intended with Android's current SQLite bindings. b/117266738

رفع اشکال

  • Fixed a bug where Room wouldn't correctly use the TypeConverter of a return type if the DAO method was a suspend function. b/122988159
  • Fixed a bug where Room would incorrectly identify inherited suspend functions as non-suspending. b/122902595
  • Fixed a bug where Room would generate incorrect code when an @Embedded field was in a parent class and used in multiple child classes. b/121099048
  • Fixed an issue where the database would deadlock when invoking DAO suspend functions between a beginTransaction() and endTransaction() . b/120854786
Version 2.1.0-alpha03

4 دسامبر 2018

تغییرات API

  • The FTS tokenizer in @Fts3 / @Fts4 now takes a String instead of an Enum. This allows custom tokenizers to be used by Room. Built-in tokenizers are still defined in FtsOptions as string constants. b/119234881

ویژگی های جدید

  • Couroutines : DAO methods can now be suspend functions. To support suspend functions in Room a new artifact has been released, room-coroutines . b/69474692
  • DAO methods annotated with @Insert , @Delete or @Update now support ListenableFuture as return type. b/119418331

رفع اشکال

  • Fixed a bug where Room would incorrectly attempt to find a constructor with columns in the ignoredColumns property of @Entity . b/119830714
  • Fixed a bug where Room would not mark DAO method parameters as final in their generated implementation. b/118015483
  • Fixed a bug where Room's processor would crash when reporting an error on a query with special symbols. b/119520136
  • Fixed a bug where Room would decline other various Collection implementations as arguments of an IN expression. b/119884035
  • Fixed a bug where LiveData returned from Room would get garbage collected when observed forever causing it to no longer emit new data. b/74477406
  • Updated RoomDatabase 's close lock to reduce lock contention. b/117900450
Version 2.1.0-alpha02

30 اکتبر 2018

ویژگی های جدید

  • Added support for referencing a @DatabaseView in a @Relation . b/117680932

رفع اشکال

  • Fixed a bug where Room would perform disk I/O in the main thread when subscribing and disposing from an Rx return type. b/117201279
  • Fixed a bug where Room would fail to find an appropriate type converter for a field in a Kotlin entity class. b/111404868
  • Fixed a bug where Room would generate incorrect code for a DAO interface implementation containing a Kotlin default method that has no arguments. b/117527454
  • Updated Room's SQLite grammar parser, fixing a performance issue that would cause long build times. b/117401230
Version 2.1.0-alpha01

8 اکتبر 2018

ویژگی های جدید

  • FTS : Room now supports entities with a mapping FTS3 or FTS4 table. Classes annotated with @Entity can now be additionally annotated with @Fts3 or @Fts4 to declare a class with a mapping full-text search table. FTS options for further customization are available via the annotation's methods. b/62356416
  • Views : Room now supports declaring a class as a stored query, also known as a view using the @DatabaseView annotation. b/67033276
  • Auto Value : Room now supports declaring AutoValue annotated classes as entities and POJOs. The Room annotations @PrimaryKey , @ColumnInfo , @Embedded and @Relation can now be declared in an auto value annotated class' abstract methods. Note that these annotation must also be accompanied by @CopyAnnotations for Room to properly understand them. b/62408420
  • Additional Rx Return Types Support : DAO methods annotated with @Insert , @Delete or @Update now support Rx return types Completable , Single<T> and Maybe<T> . b/63317956
  • Immutable Types with @Relation : Room previously required @Relation annotated fields to be settable but now they can be constructor parameters.
  • enableMultiInstanceInvalidation : Is a new API in RoomDatabase.Builder to enable invalidation across multiple instances of RoomDatabase using the same database file. This multi-instance invalidation mechanism also works across multiple processes. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade : Is a new API in RoomDatabase.Builder to automatically re-create the database if a downgrade happens. b/110416954
  • ignoredColumns : Is a new API in the @Entity annotation that can be used to list ignored fields by name. Useful for ignoring inherited fields on an entity. b/63522075

API / Behavior Changes

  • mCallback and mDatabase in RoomDatabase are now @Deprecated and will be removed in the next major version of Room. b/76109329

رفع اشکال

  • Fixed two issues where Room wouldn't properly recover from a corrupted database or a bad migration during initialization. b/111504749 and b/111519144
  • Room will now properly use Kotlin's primary constructor in data classes avoiding the need to declare the fields as vars . b/105769985
نسخه 2.0.0 نسخه 2.0.0

1 اکتبر 2018

androidx.room 2.0.0 is released with no changes from 2.0.0-rc01.

Version 2.0.0-rc01

20 سپتامبر 2018

androidx.room 2.0.0-rc01 is released with no changes from 2.0.0-beta01.

Version 2.0.0-beta01

2 جولای 2018

API / Behavior Changes

  • Added RoomDatabase.Builder.setQueryExecutor() to allow customization of where queries are run
  • Added RxJava2 Observable support
  • Generated DAO and Database implementations are now final

رفع اشکال

  • Specify class/field name in "cannot find getter for field" error b/73334503
  • Fixed RoomOpenHelper backwards compatibility with older versions of Room b/110197391
Pre-AndroidX Dependencies

For the pre-AndroidX versions of Room, include these dependencies:

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

Room 1.1.1 is identical to Room 1.1.1-rc1 .

Version 1.1.1-rc1

May 16, 2018 We highly recommend using Room 1.1.1-rc1 instead of 1.1.0 if you are using migrations.

Fixed a bug where Room would not handle post migration initialization properly b/79362399

نسخه 1.1.0 Version 1.1.0-beta3

19 آوریل 2018

رفع اشکال

  • Fix compilation error when a Kotlin POJO references a relation entity that was defined in Java b/78199923
Version 1.1.0-beta2

5 آوریل 2018

رفع اشکال

  • Fixed a critical bug in Room's Rx Single and Maybe implementations where it would recycle the query ahead of time, causing problems if you add more than 1 observer to the returned Single or Maybe instancces. b/76031240

  • [RoomDatabase.clearAllTables][ref-clearAllTables] will not VACUUM the database if it is called inside a transaction. b/77235565

Version 1.1.0-beta1

21 مارس 2018

تغییرات API

  • Based on API Review feedback, @RawQuery does not accept passing a String as the query parameter anymore. You need to use [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (see [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] to easily create an instance of [SupportSQLiteQuery][ref-SupportSQLiteQuery] with argument support).
  • RoomDatabase.Builder's [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] method now accepts vararg int instead of vararg Integer .

رفع اشکال

  • [RoomDatabase.clearAllTables][ref-clearAllTables] now tries to return space back to the operating system by setting a WAL checkpoint and VACUUM ing the database.
  • [ @RawQuery ][ref-RawQuery] now accepts any Pojo for the observedEntities property as long as the Pojo references to one or more entities via its Embedded fields or Relation s. b/74041772
  • Paging: Room's DataSource implementation now correctly handles multi-table dependencies (such as relations, and joins). Previously these would fail to trigger new results, or could fail to compile. b/74128314
Version 1.1.0-alpha1

22 ژانویه 2018

ویژگی های جدید

  • RawQuery : This new API allows @Dao methods to receive the SQL as a query parameter b/62103290 , b/71458963
  • fallBackToDestructiveMigrationsFrom : This new API in RoomDatabase.Builder allows for finer grained control over from which starting schema versions destructive migrations are allowed (as compared to fallbackToDestructiveMigration) b/64989640
  • Room now only supports newer Paging APIs (alpha-4+), dropping support for the deprecated LivePagedListProvider . To use the new Room alpha, you'll need to use paging alpha-4 or higher, and switch from LivePagedListProvider to LivePagedListBuilder if you haven't already.

رفع اشکال

  • Improved support for Kotlin Kapt types. b/69164099
  • Order of fields do not invalidate schema anymore. b/64290754