اتاق

کتابخانه تداوم اتاق یک لایه انتزاعی را بر روی 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"
}

کاتلین

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 مراجعه کنید.

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

به صورت اختیاری، برای کتابخانه‌های غیر اندروید (یعنی فقط ماژول‌های 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-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 که توسط room-paging ایجاد می‌شود، اکنون از queryExecutor ارسال شده از RoomDatabase.Builder استفاده می‌کند، بنابراین می‌توان آن را به جای Dispatchers.IO قبلی لغو کرد. ( Iae259 )

نسخه 2.4.0-alpha05

29 سپتامبر 2021

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

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

تغییرات API

  • ویژگی جدیدی به حاشیه‌نویسی TypeConverters اضافه کرد تا به توسعه‌دهندگان اجازه دهد مبدل‌های Enum و UUID داخلی را غیرفعال کنند. به‌طور پیش‌فرض، این مبدل‌ها روشن هستند، اما می‌توانید آنها را برای یک محدوده خاص یا برای کل پایگاه داده غیرفعال کنید. برای جزئیات به مستندات TypeConverters مراجعه کنید. ( 36ae9e , b/195413406 )

  • پشتیبانی از کلیدها/مقدارهای غیر POJO برای انواع برگشتی Multimap در DAO از طریق حاشیه نویسی @MapInfo . ( I4d704 )

زمانی که ستون کلید یا مقدار نقشه از یک ستون باشد، @MapInfo مورد نیاز خواهد بود. نمونه را ببینید:

@MapInfo(valueColumn = "songCount")
@Query("""
       SELECT *, COUNT(mSongId) as songCount
       FROM Artist JOIN Song ON Artist.artistName = Song.artist
       GROUP BY artistName
       """)
fun getArtistAndSongCounts(): Map<Artist, Integer>
  • هنگام استفاده از Paging3 with Room room-paging به یک مصنوع ضروری تبدیل کنید. ( ایاف )

رفع اشکال

  • مشکلی را برطرف کنید که در آن هنگام جستجو حاوی یک عبارت ORDER BY از ستونی از کلید نقشه، نتایج جستجوهای چند نقشه به درستی مرتب نشده بودند. ( I6b887 )

مشارکت خارجی

  • API جدید برای تعیین ترتیب فهرست در @Index اضافه شد. با تشکر از نیکیتا ژلونکین. ( I033fc )

نسخه 2.4.0-alpha04

21 جولای 2021

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

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

  • Room اکنون از روش‌های @Dao از انواع بازگشت چند نقشه پشتیبانی می‌کند که برای بیانیه‌های JOIN مفید است. انواع مولتی مپ های پشتیبانی شده Map به همراه Guava's 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 ، Rx's Observable ، یا Coroutines Flow قرار داد.

در صفحه نمایش

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

  • این مصنوعات اختیاری است و از حمایت موجود برای پشتیبانی از صفحه بندی 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 -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 را ارائه می دهد. پاسخ به تماس را می توان از طریق 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 -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 )
  • مسئله ای را که در هنگام ساخت با 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 را برمی گرداند ، اکنون خطایی ایجاد می کند. از آنجایی که معاملات محدود هستند ، در حال حاضر برای شروع اتاق غیرممکن است و یک معامله را در مورد عملکردی که ممکن است در موضوعات مختلف نمای�� داده شود ، پایان می یابد. b/120109336
  • OnConflictStrategy.FAIL و OnConflictStrategy.ROLLBACK از آنجا که مطابق با اتصال SQLite فعلی Android در نظر گرفته نشده است @Deprecated شده اند. b/117266738

رفع اشکال

  • رفع اشکال در جایی که اتاق به درستی از 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

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

  • Couroutines : روش های DAO اکنون می توانند توابع را به حالت تعلیق درآورند. برای پشتیبانی از کارکردهای تعلیق در اتاق ، مصنوعات جدیدی منتشر شده است ، room-coroutines . b/69474692
  • روشهای DAO با @Insert ، @Delete یا @Update اکنون از ListenableFuture به عنوان نوع بازگشت پشتیبانی می کنند. b/119418331

رفع اشکال

  • رفع اشکال در جایی که اتاق به طور نادرست سعی در یافتن سازنده با ستون در ویژگی ignoredColumns از @Entity دارد. b/119830714
  • رفع اشکالی که در آن اتاق پارامترهای روش DAO را به عنوان نهایی در اجرای تولید شده خود نشان نمی دهد. b/118015483
  • رفع اشکال در جایی که پردازنده اتاق هنگام گزارش خطایی در پرس و جو با نمادهای خاص خراب می شود. b/119520136
  • رفع اشکالی که در آن اتاق به عنوان استدلال از بیان IN ، سایر اجرای Collection مختلف را کاهش می دهد. b/119884035
  • رفع اشکال در جایی که زندگی از اتاق بازگشت ، زباله ها را جمع آوری می کند که برای همیشه مشاهده می شود و باعث می شود دیگر داده های جدید منتشر نشود. b/74477406
  • قفل نزدیک RoomDatabase به روز شده برای کاهش مشاجره قفل. 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