اتاق
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
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()
میشوند. استراتژی جدید به شرح زیر است:
یک شیء انتظار را تعریف کنید که
RoomDatabaseConstructor
را پیاده سازی می کندexpect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
با استفاده از
@ConstructedBy
شی را با اعلان@Database
پیوند دهید@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabase
یک نمونه پایگاه داده جدید اما بدون ارسال آرگومان کارخانه ایجاد کنید
fun createNewDatabase(path: String) = Room.databaseBuilder<AppDatabase>(name = path) .setDriver(BundledSQLiteDriver()) .setQueryCoroutineContext(Dispatchers.IO) .build()
رفعهای b/316978491 ، b/338446862 ، و b/342905180
- پشتیبانی از
@RawQuery
در Room KMP با افزودن یک API جدید به نامRoomRawQuery
که شبیه بهSupportSQLiteQuery
از نظر نگهداری در رشته خام SQL و تابعی برای اتصال آرگومان ها به یک عبارت است. توابع حاشیه نویسی@RawQuery
اکنون می توانند یک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، پوچ بودن آرگومان های نوع مهم است، در حالی که در جاوا این امر بیشتر نادیده گرفته می شود. به عنوان مثال، فرض کنید یک «جریان» دارید
- مصنوع جدید برای پلاگین 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 ها است.
ویژگی های جدید
تغییرات 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، پوچ بودن آرگومان های نوع مهم است، در حالی که در جاوا این امر بیشتر نادیده گرفته می شود. به عنوان مثال، فرض کنید یک «جریان» دارید
تغییرات 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 ها است.
ویژگی های جدید
- مصنوعات جدید
room-paging
room-paging-rxjava2
، roomroom-paging-rxjava3
وroom-paging-guava
برای پشتیبانی در Room Paging اضافه شده اند . b/203666906 )
تغییرات 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'sImmutableMap
،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 ها است.
ویژگی های جدید
- یک مبدل نوع داخلی برای UUID اضافه شده است. ( I671e8 , b/73132006 )
تغییرات API
ویژگی جدیدی به حاشیهنویسی TypeConverters اضافه کرد تا به توسعهدهندگان اجازه دهد مبدلهای Enum و UUID داخلی را غیرفعال کنند. بهطور پیشفرض، این مبدلها روشن هستند، اما میتوانید آنها را برای یک محدوده خاص یا برای کل پایگاه داده غیرفعال کنید. برای جزئیات به مستندات TypeConverters مراجعه کنید. ( 36ae9e , b/195413406 )
پشتیبانی از کلیدها/مقدارهای غیر POJO برای انواع برگشتی Multimap در DAO از طریق حاشیه نویسی
@MapInfo
. ( I4d704 )
زمانی که ستون کلید یا مقدار نقشه از یک ستون باشد، @MapInfo
مورد نیاز خواهد بود. نمونه را ببینید:
@MapInfo(valueColumn = "songCount")
@Query("""
SELECT *, COUNT(mSongId) as songCount
FROM Artist JOIN Song ON Artist.artistName = Song.artist
GROUP BY artistName
""")
fun getArtistAndSongCounts(): Map<Artist, Integer>
- هنگام استفاده از Paging3 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'sImmutableMap
،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'sObservable
، یا CoroutinesFlow
قرار داد.
در صفحه نمایش
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
، اکنون از انواع بازگشت RXCompletable
،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 typesCompletable
,Single<T>
andMaybe<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 inRoomDatabase.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 inRoomDatabase.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
andmDatabase
inRoomDatabase
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
andMaybe
implementations where it would recycle the query ahead of time, causing problems if you add more than 1 observer to the returnedSingle
orMaybe
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 aString
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 ofvararg 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 theobservedEntities
property as long as the Pojo references to one or more entities via itsEmbedded
fields orRelation
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 inRoomDatabase.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 pagingalpha-4
or higher, and switch fromLivePagedListProvider
toLivePagedListBuilder
if you haven't already.
رفع اشکال
- Improved support for Kotlin Kapt types. b/69164099
- Order of fields do not invalidate schema anymore. b/64290754