Room
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
10 lipca 2024 r. | 2.6.1 | - | - | 2.7.0-alfa05 |
Deklarowanie zależności
Aby dodać zależność od pokoju, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
Zależności dotyczące sal obejmują migracje sal i pokoje RxJava.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Odlotowe
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx.room:room-compiler:$room_version" // To use Kotlin Symbol Processing (KSP) ksp "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:$room_version" }
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) ksp("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // optional - RxJava2 support for Room implementation("androidx.room:room-rxjava2:$room_version") // optional - RxJava3 support for Room implementation("androidx.room:room-rxjava3:$room_version") // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") }
Informacje o korzystaniu z wtyczki KAPT znajdziesz w dokumentacji KAPT.
Informacje o korzystaniu z wtyczki KSP znajdziesz w krótkim wprowadzeniu do KSP.
Informacje o korzystaniu z rozszerzeń Kotlin znajdziesz w dokumentacji ktx.
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opcjonalnie w przypadku bibliotek innych niż Android (tj. modułów Gradle, które są dostępne tylko w języku Java lub Kotlin), możesz użyć adnotacji androidx.room:room-common
, aby korzystać z adnotacji dotyczących sal.
Konfigurowanie opcji kompilatora
W pokoju dostępne są poniższe opcje procesora adnotacji.
room.schemaLocation |
directory
Włącza eksportowanie schematów baz danych do plików JSON w danym katalogu. Więcej informacji znajdziesz w artykule Migracje sal. |
room.incremental |
boolean
Włącza procesor adnotacji przyrostowych Gradle. Wartość domyślna to true .
|
room.generateKotlin |
boolean
Generuj pliki źródłowe Kotlin zamiast języka Java. Wymaga KSP. Wartość domyślna to false .
Więcej informacji znajdziesz w uwagach do wersji 2.6.0.
|
Używanie wtyczki Room Gradle
W wersji 2.6.0 lub nowszej możesz użyć wtyczki Room Gradle, aby skonfigurować opcje kompilatora sal. Wtyczka konfiguruje projekt w taki sposób, aby wygenerowane schematy (które są danymi wyjściowymi zadań kompilacji i są wykorzystywane na potrzeby migracji automatycznych) były prawidłowo skonfigurowane tak, aby kompilacje można było odtworzyć i zapisać w pamięci podręcznej.
Aby dodać wtyczkę, zdefiniuj ją i jej wersję w pliku kompilacji Gradle najwyższego poziomu.
Odlotowe
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
W pliku kompilacji Gradle na poziomie modułu zastosuj wtyczkę i użyj rozszerzenia room
.
Odlotowe
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
Podczas korzystania z wtyczki do obsługi Gradle w pokoju wymagane jest ustawienie schemaDirectory
. Spowoduje to skonfigurowanie kompilatora sal oraz różnych zadań i jego backendów (javac, KAPT, KSP) do przesyłania plików schematu do folderów o różnych rodzajach danych, np. schemas/flavorOneDebug/com.package.MyDatabase/1.json
. Te pliki należy sprawdzić w repozytorium, aby mogły zostać użyte na potrzeby weryfikacji i automatycznej migracji.
Niektórych opcji nie można skonfigurować we wszystkich wersjach wtyczki Room Gradle, nawet jeśli są one obsługiwane przez kompilator do obsługi pokoi. W tabeli poniżej znajdziesz listę wszystkich opcji wraz z wersją wtyczki Room Gradle, która dodała obsługę konfigurowania tej opcji za pomocą rozszerzenia room
. Jeśli masz starszą wersję lub jeśli ta opcja nie jest jeszcze obsługiwana, możesz zamiast tego użyć opcji procesora adnotacji.
Option | Od wersji |
---|---|
room.schemaLocation (pole wymagane) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
Użyj opcji procesora adnotacji
Jeśli nie używasz wtyczki Room Gradle lub jeśli wybrana opcja nie jest obsługiwana w Twojej wersji, możesz skonfigurować pokój za pomocą opcji procesora adnotacji, zgodnie z opisem w sekcji Dodawanie zależności kompilacji. Sposób określania opcji adnotacji zależy od tego, czy w przypadku pokoju używany jest klucz KSP czy KAPT.
Odlotowe
// For KSP ksp { arg("option_name", "option_value") // other otions... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += [ "option_name":"option_value", // other options... ] } } } }
Kotlin
// For KSP ksp { arg("option_name", "option_value") // other options... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "option_name" to "option_value", // other options... ) } } } }
Ponieważ room.schemaLocation
jest katalogiem, a nie typem podstawowym, podczas dodawania tej opcji trzeba użyć elementu CommandLineArgumentsProvider
, aby Gradle znał ten katalog podczas przeprowadzania aktualnych testów.
Opcja Przenieś bazę danych sal pokazuje pełną implementację CommandLineArgumentsProvider
, która zawiera lokalizację schematu.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.
Wersja 2.7
Wersja 2.7.0-alpha05
10 lipca 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha05
została zwolniona. Wersja 2.7.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nazwa
SQLiteKt
została zmieniona naSQLite
, aBundledSQLiteKt
naBundledSQLite
. (I8B501)
Poprawki błędów
- Naprawiono błąd, który powodował zakleszczenie lub błąd
RoomDatabase
po przekroczeniu limitu czasu połączenia w przypadku używaniaAndroidSQLiteDriver
.
Wersja 2.7.0-alpha04
12 czerwca 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha04
została zwolniona. Wersja 2.7.0-alfa04 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że procesor adnotacji w pokoju generował niezgodny kod KMP, gdy w DAO zdefiniowany był typ zwrotu z wielu map. (B/340983093)
- Rozwiązaliśmy problem, który powodował, że pokój nie mógł znaleźć wygenerowanej implementacji bazy danych, jeśli klasa z adnotacjami
@Database
nie miała pakietu. (b/342097292) - Rozwiązaliśmy problem, który powodował, że włączenie automatycznego zamykania i unieważniania wielu instancji skutkowało czasem
ConcurrentModificationException
, gdy baza danych była zamykana automatycznie z powodu bezczynności.
Wersja 2.7.0-alpha03
29 maja 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha03
została zwolniona. Wersja 2.7.0-alfa03 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw różne problemy dotyczące Kotlin 2.0 i KSP 2.0. Pamiętaj, że platforma Kotlin 2.0 z obsługą KSP 2 nie została jeszcze ukończona i pracujemy nad różnymi interfejsami API i zmianami w działaniu nowego kompilatora. (b/314151707)
Wersja 2.7.0-alpha02
14 maja 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha02
została zwolniona. Wersja 2.7.0-alfa02 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto różne problemy z KSP.
Wersja 2.7.0-alpha01
1 maja 2024 r.
Usługa androidx.room:room-*:2.7.0-alpha01
została zwolniona. Wersja 2.7.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa wielu platform (KMP): w tej wersji pokój został przekształcony w bibliotekę Kotlin Multiplatform (KMP). Chociaż wciąż wymaga trochę pracy, ta wersja wprowadza nową wersję Room, w której większość funkcji została ujednolicona (jest wieloplatformowa). Obecnie obsługiwane platformy to Android, iOS, JVM (komputery), natywny Mac i system Linux. Wszystkie brakujące funkcje na nowych obsługiwanych platformach zostaną oznaczone jako „pełne funkcji” w kolejnych wersjach pokoi.
Więcej informacji o tym, jak zacząć korzystać z usługi Room KMP, znajdziesz w oficjalnej dokumentacji KMP przeznaczonej dla sal.
- Generowanie kodu Kotlin w KSP jest domyślnie włączone, jeśli przetwarzanie odbywa się przez KSP. W przypadku projektów KAPT lub Javy są nadal generowane w narzędziu Room.
Zmiany interfejsu API
- Dodano przeciążenie zasady
Room.databaseBuilder()
, które wykorzystuje parametr lambda, który powinien być używany z funkcją generowania pokoi, aby uniknąć używania odbicia podczas tworzenia instancji wygenerowanej implementacjiRoomDatabase
. Przykład użycia:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
- Do kreatora tworzenia dodano interfejs API służący do konfigurowania sali z użyciem obiektu
CoroutineContext
:RoomDatabase.Builder.setQueryCoroutineContext
. Pamiętaj, że elementRoomDatabase
można skonfigurować tylko z wykonawcami korzystającymi zsetQueryExecutor
lub z kontekstem Coroutine, ale nie z obydwoma tymi elementami. - Dodano interfejs API do konfigurowania sali ze sterownikiem
SQLite
:RoomDatabase.Builder.setDriver()
. Więcej informacji o interfejsieSQLite
Driver API znajdziesz w dokumentacji SQLite KMP. - Dodano interfejsy API umożliwiające dostęp do interfejsu
SQLiteConnection
z interfejsów API sterowników:RoomDatabase.useReaderConnection
iRoomDatabase.useWriterConnection
. - Wywołania zwrotne związane z usługą Varios Room mają teraz przeciążoną wersję, która otrzymuje
SQLiteConnection
zamiastSupportSQLiteDatabase
. Należy je zastąpić podczas migracji do projektu KMP. Więcej informacji o przenoszeniu informacji o wykorzystaniu sal w aplikacji na Androida do wspólnego modułu KMP znajdziesz w przewodniku po migracji. Wywołania zwrotne:Migration.migrate(SQLiteConnection)
AutoMigrationSpec.onPostMigrate(SQLiteConnection)
RoomDatabase.Callback.onCreate(SQLiteConnection)
RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
RoomDatabase.Callback.onOpen(SQLiteConnection)
- Artefakt KTX
androidx.room:room-ktx
został scalony z artefaktemandroidx.room:room-runtime
wraz ze wszystkimi jego interfejsami API. artefakt jest teraz pusty. Usuń ją z listy zależności.
Wersja 2.6
Wersja 2.6.1
29 listopada 2023 r.
Usługa androidx.room:room-*:2.6.1
została zwolniona. Wersja 2.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązano problem z wygenerowanym kodem, który powodował, że domyślna wartość kolumn liczby z podwójną wartością w polu
EntityCursorConverter
była ustawiana na 0 zamiast 0,0. Uwzględniono też potencjalną poprawkę dotyczącą podobnej wielkości liter w kolumnach typu Floating. (Id75f5, b/304584179) - Wyjątki zgłoszone w trakcie wczytywania typu
PagingSource
będą teraz rozpowszechniane jako elementLoadStateUpdate
zLoadResult.Error
zawierający obiekt typu Throwable. Ten stan błędu można zaobserwować wPagingDataAdapter.loadStateFlow(Views)
lubLazyPagingItems.loadState(Compose)
. Zauważ, że jest to zmiana w zachowaniu, w której w przeszłości błędy wczytywania będą pojawiać się jako wyjątek wywołany przez metodę dao, która uruchomiła wczytywanie. (I93887, b/302708983)
Wersja 2.6.0
18 października 2023 r.
Usługa androidx.room:room-*:2.6.0
została zwolniona. Wersja 2.6.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.5.0
- Opcja włączenia generowania kodu w Kotlin (lub „Kotlin CodeGen”) jest teraz dostępna w narzędziu KSP pokoju. (4297ec0). Aby włączyć Kotlin CodeGen w pokoju, dodaj nazwę opcji
room.generateKotlin
do opcji procesora dla KSP. Więcej informacji o przekazywaniu opcji procesora na potrzeby KSP znajdziesz w dokumentacji KSP.
Uwaga: podczas korzystania z kotlin CodeGen należy pamiętać, że zostały dodane dodatkowe ograniczenia. Właściwości abstrakcyjne jako metody pobierania DAO lub zapytania DAO w kotlin CodeGen są niedozwolone. Należy je przepisać jako funkcje, aby uniknąć fałszywego przekonania, że wartość właściwości jest niezmienna i ma stały zapisany wynik. Kolejne ograniczenie, które zostało dodane, polega na tym, że w narzędziu Room for Kotlin CodeGen nie są już dozwolone typy zwracanych kolekcji, dla których wartości null są dozwolone.
Ostrzeżenie: podczas korzystania z narzędzia Kotlin CodeGen możesz zauważyć, że Twoje projekty są bardziej rygorystyczne pod względem dopuszczalności wartości null. W Kotlin CodeGen znaczenie argumentów typu null jest istotny, natomiast w Javie ta zasada jest najczęściej ignorowana. Załóżmy na przykład, że masz zwrot typu „Flow<foo\>”, a tabela jest pusta. W Java CodeGen nie spowoduje to żadnych problemów, ale w Kotlin CodeGen pojawi się błąd. Aby tego uniknąć, musisz użyć parametru „Flow<foo?\>” przy założeniu, że emitowana jest wartość null. </foo?\></foo\>
- Nowy artefakt wtyczki Room Gradle został dodany do pokoju o identyfikatorze
androidx.room
. Rozwiązuje to różne problemy występujące w pokoju dotyczące wprowadzania i wyjścia schematów za pomocą opcji procesora adnotacji Gradle. Więcej informacji znajdziesz w informacjach o wersji 2.6.0-alfa02 pokoju. - Klasy wartości w elementach pokoju są teraz obsługiwane przez KSP. (4194095).
- Zagnieżdżone typy zwracania map w funkcjach DAO są teraz obsługiwane w pokojach. (I13f48, 203008711)
Wersja 2.6.0-rc01
20 września 2023 r.
Usługa androidx.room:room-*:2.6.0-rc01
została zwolniona. Wersja 2.6.0-rc01 zawiera te zatwierdzenia.
Wersja 2.6.0-beta01
23 sierpnia 2023 r.
Usługa androidx.room:room-*:2.6.0-beta01
została zwolniona. Wersja 2.6.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Obsługa wyjątku przypadku
SQLite
podczas działania typu upsert napotkanego, gdy wyjątek2067 SQLITE_CONSTRAINT_UNIQUE
został zgłoszony podczas działania upsert. Komponent upsert powinien wykonać aktualizację. (If2849, b/243039555)
Wersja 2.6.0-alpha03
9 sierpnia 2023 r.
Usługa androidx.room:room-*:2.6.0-alpha03
została zwolniona. Wersja 2.6.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Zagnieżdżone typy zwracania map w funkcjach DAO są teraz obsługiwane w pokojach. (I13f48, 203008711)
Zmiany interfejsu API
- Utworzono nowy typ adnotacji o nazwie
@MapColumn
, który zastąpił tag@MapInfo
, który został już wycofany. Dla każdej nazwy kolumny (keyColumnName
,valueColumnName
lub obu) dostępnej w adnotacji@MapInfo
musisz zadeklarować adnotację@MapColumn
przy użyciu samego parametrucolumnName
i użyć adnotacji w konkretnym argumencie typu, do którego się odwołujesz (klucz lub wartość mapy), w zwracanym typie funkcji DAO. Dzieje się tak, ponieważ adnotacja@MapColumn
jest używana bezpośrednio w argumencie typu w zwracanym typie funkcji DAO, a nie w samej funkcji, takiej jak@MapInfo
. Więcej informacji znajdziesz w dokumentacji usługi@MapColumn
. (Ib0305, b/203008711) - Zaktualizowano pliki interfejsu API, aby dodać adnotacje o pomijaniu zgodności (I8e87a, b/287516207)
- Interfejsy API wtyczki Room Gradle zostały zaktualizowane, aby nie zawsze wymagały konfiguracji dla poszczególnych wariantów. Oznacza to, że wtyczka może przyjmować lokalizację globalną dla wszystkich wariantów bez tworzenia wielu katalogów. Umożliwia to płynniejsze migracje, które jest na tyle elastyczne, że pozwala też ręcznie konfigurować rodzaje lub schematy typów kompilacji, zachowując jednocześnie zalety wtyczki (kompilacje powtarzalne i buforowane). (I09d6f, b/278266663)
Poprawki błędów
- Usunięto potencjalną lukę w zabezpieczeniach pamięci w
QueryInterceptorStatement
. (I193d1) - Naprawiliśmy nieprawidłowe działanie funkcji
QueryInterceptorDatabase execSQL()
. (Iefdc8).
Wersja 2.6.0-alpha02
21 czerwca 2023 r.
Usługa androidx.room:room-*:2.6.0-alpha02
została zwolniona. Wersja 2.6.0-alfa02 zawiera te zatwierdzenia.
Wtyczka do obsługi Gradle do sal
Ta nowa wersja zawiera nowy artefakt wtyczki do obsługi pokoi o identyfikatorze androidx.room
, która rozwiązuje różne problemy występujące w Pokoju związane z obsługą danych wejściowych i wyjściowych schematów przy użyciu opcji procesora adnotacji Gradle. Wtyczka Gradle do pokoju konfiguruje projekt w taki sposób, że wygenerowane schematy są używane na potrzeby migracji automatycznych i są dane wyjściowe zadań kompilacji, które są prawidłowo skonfigurowane tak, aby miały możliwe do odtworzenia i buforowane kompilacje. Wtyczka udostępnia DSL do konfigurowania lokalizacji schematu podstawowego:
room {
schemaDirectory("$projectDir/schemas/")
}
Następnie wtyczka skonfiguruje kompilator do pomieszczeń oraz różne zadania i jego backendy (javac, KAPT, KSP) w taki sposób, aby pliki schematu były umieszczane w folderach o różnych nazwach, np. schemas/flavorOneDebug/com.package.MyDatabase/1.json
. Zwykle te pliki są sprawdzane w repozytorium, które służą do weryfikacji i automatycznej migracji. Po przejściu na wtyczkę zamiast opcji procesora adnotacji, musisz skopiować istniejące pliki schematu do wygenerowanych katalogów rodzajów utworzonych przez wtyczkę. Jest to jednorazowa operacja migracji, którą trzeba przeprowadzić ręcznie. Dokumentacja schematu na stronie developers.android.com zostanie zaktualizowana w przyszłości, gdy rozwiążemy problemy z opinią, a wtyczka będzie działać stabilnie, więc warto spróbować.
Zmiany interfejsu API
- Usługa
RoomDatabase.QueryCallback
została zdefiniowana jako funkcjonalny interfejs umożliwiający użycie konwersji SAM. (Iab8ea, b/281008549)
Poprawki błędów
- Rozwiązanie problemu występującego podczas tworzenia instancji bazy danych w Robolectric po migracji źródeł sal z Javy do Kotlin. (Ic053c, b/274924903)
Wersja 2.6.0-alpha01
22 marca 2023 r.
Usługa androidx.room:room-*:2.6.0-alpha01
została zwolniona. Wersja 2.6.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa klas wartości w Pokoju na potrzeby KSP. Sala może teraz obsługiwać klasy wartości w elementach. (4194095).
- Generowanie kodu Kotlin(lub „Kotlin CodeGen”) można teraz włączyć w pokoju (4297ec0). Aby włączyć Kotlin CodeGen w pokoju, dodaj nazwę opcji
room.generateKotlin
do opcji procesora dla KSP. Więcej informacji o przekazywaniu opcji procesora na potrzeby KSP znajdziesz w dokumentacji KSP.
Uwaga: podczas korzystania z kotlin CodeGen należy pamiętać, że zostały dodane dodatkowe ograniczenia. Właściwości abstrakcyjne jako metody pobierania DAO lub zapytania DAO w kotlin CodeGen są niedozwolone. Należy je przepisać jako funkcje, aby uniknąć fałszywego przekonania, że wartość właściwości jest niezmienna i ma stały zapisany wynik. Kolejne ograniczenie, które zostało dodane, polega na tym, że w narzędziu Room for Kotlin CodeGen nie są już dozwolone typy zwracanych kolekcji, dla których wartości null są dozwolone.
Ostrzeżenie: podczas korzystania z narzędzia Kotlin CodeGen możesz zauważyć, że Twoje projekty są bardziej rygorystyczne pod względem dopuszczalności wartości null. W Kotlin CodeGen znaczenie argumentów typu null jest istotny, natomiast w Javie ta zasada jest najczęściej ignorowana. Załóżmy na przykład, że masz zwrot typu „Flow<foo\>”, a tabela jest pusta. W Java CodeGen nie spowoduje to żadnych problemów, ale w Kotlin CodeGen pojawi się błąd. Aby tego uniknąć, musisz użyć parametru „Flow<foo?\>” przy założeniu, że emitowana jest wartość null. </foo?\></foo\>
Zmiany interfejsu API
- Ochrona przed bezsensownym wykorzystaniem zbiorów dopuszczalnych do wartości null w typach zwracanych metod DAO. (I777dc, b/253271782, b/259426907)
- Dodaj interfejs API do tworzenia przepływu, który generuje zmiany narzędzia do śledzenia unieważnień. Interfejs API przydaje się do tworzenia strumieni, które muszą reagować na zmiany w bazie danych. (I8c790, b/252899305)
Poprawki błędów
- Nie zezwalaj na właściwości abstrakcyjne w postaci modułów pobierających DAO lub zapytań DAO w codegencie Kotlin. Należy je tylko przepisywać jako funkcje, aby uniknąć fałszywego przekonania, że wartość właściwości jest niezmienna i ma stały zapisany wynik. (If6a13, b/127483380, b/257967987)
Wersja 2.5.2
Wersja 2.5.2
21 czerwca 2023 r.
Usługa androidx.room:room-*:2.5.2
została zwolniona. Wersja 2.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem ze zgodnością pliku kotlinx-metadata-jvm. (386d5c)
- Rozwiązaliśmy problem, który powodował, że podczas korzystania z testu Roboelektrycznego Room zwracał błąd. (f79bea, b/274924903)
Wersja 2.5.1
Wersja 2.5.1
22 marca 2023 r.
Usługa androidx.room:room-*:2.5.1
została zwolniona. Wersja 2.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Unikaj sprawdzania katalogu nadrzędnego bazy danych w systemie
FrameworkSQLiteHelper
, jeśli baza danych jest już otwarta. (5de86b8) - Użyj kontroli
isOpenInternal
podczas sprawdzania, czy baza danych jest już otwarta. (E91fb35) - Lepsza obsługa zgłoszenia powracającego w pokoju
acquireTransactionThread()
jest już dostępna. (219f98b). Podczas zawieszania transakcji pokój używa wątku od wykonawcy transakcji, uruchamia w nim pętlę zdarzeń i wysyła do niej zawieszenie operacji na bazie danych, dzięki czemu wszystkie są objęte współpracą transakcji. Zwykle wątek transakcji różni się od tego, z którego została rozpoczęta transakcja, ale w niektórych przypadkach są takie same. Aby obsłużyć takie powtarzane przypadki, interfejswithTransaction()
został zrefaktoryzowany, aby nie polegał już na zadaniu sterującym. Zamiast tego uruchomi blok zawieszenia transakcji z poziomurunBlocking
w wątku transakcji.
Wersja 2.5.0
Wersja 2.5.0
22 lutego 2023 roku
androidx.room:room-paging-guava:2.5.0
, androidx.room:room-paging-rxjava2:2.5.0
i androidx.room:room-paging-rxjava3:2.5.0
zostały udostępnione. Wersja 2.5.0 zawiera te zatwierdzenia.
Wersja 2.5.0
11 stycznia 2023 r.
Usługa androidx.room:room-*:2.5.0
została zwolniona. Wersja 2.5.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.4.0
- Wszystkie źródła (
room-runtime
) zostały przekształcone z Javy na Kotlin. Jeśli kod znajduje się w Kotlin, możesz napotkać problemy związane ze zgodnością źródła z powodu konwersji biblioteki na Kotlin. Na przykład znaną zmianą w przypadku niezgodności źródła jest to, że w zasadzieInvalidationTracker
musisz zadeklarować parametronInvalidate()
w elemencieObserver
, aby mieć parametr typuSet
, a nieMutableSet
. Ponadto niektóre metody pobierania zostały przekonwertowane na właściwości wymagające składni dostępu do właściwości w plikach Kotlin. Jeśli występują istotne niezgodności, zgłoś błąd. - Dodano nową adnotację w formie skrótu
@Upsert
, która próbuje wstawić element, gdy nie ma konfliktu unikatowości, lub zaktualizować go w przypadku takiego konfliktu. (I7aaab, b/241964353) - Dodano nowe artefakty stronicowania sal
room-paging-rxjava2
,room-paging-rxjava3
iroom-paging-guava
w celu zapewnienia obsługi stronicowania sal. - Dodano interfejsy API do podawania nazw tabel kluczy i wartości na potrzeby ujednoznacznienia w
@MapInfo
(Icc4b5)
Wersja 2.5.0-rc01
7 grudnia 2022 r.
Usługa androidx.room:room-*:2.5.0-rc01
została zwolniona. Wersja 2.5.0-rc01 zawiera te zatwierdzenia.
- Ta wersja jest taka sama jak
2.5.0-beta02
.
Wersja 2.5.0-beta02
9 listopada 2022 r.
Usługa androidx.room:room-*:2.5.0-beta02
została zwolniona. Wersja 2.5.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Naprawiono różne interfejsy API, które przyjmują argumenty zapytania ze zmiennych (
Array<Any?>
) do kontrastujących (Array<out Any?>
), aby pasowały do zachowania tablic w Javie. (B/253531073)
Wersja 2.5.0-beta01
5 października 2022 r.
Usługa androidx.room:room-*:2.5.0-beta01
została zwolniona. Wersja 2.5.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Ogranicz minimalną wersję obsługującą
@Upsert
do interfejsu API 16. Wynika to z braku możliwości identyfikacji w przypadku konfliktu ograniczenia klucza podstawowego w starszych interfejsach API. (I5f67f, b/243039555)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że tabele-cienie były nieprawidłowo eksportowane do plików
.json
schematu, co prowadziło do ich uszkodzenia. (I4f83b, b/246751839)
Wersja 2.5.0-alpha03
24 sierpnia 2022 r.
Usługa androidx.room:room-*:2.5.0-alpha03
została zwolniona. Wersja 2.5.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nową adnotację w formie skrótu
@Upsert
, która próbuje wstawić element, gdy nie ma konfliktu unikatowości, lub zaktualizować go w przypadku takiego konfliktu. (I7aaab, b/241964353)
Poprawki błędów
- Podczas kontroli ograniczenia klucza obcego podczas automatycznej migracji sala wyśle teraz żądanie
SQLiteConstraintException
zamiastIllegalStateException
. (I328dd) - Popraw niezgodną zmianę źródła Kotlin w metodach pobierania / właściwości
getOpenHelper
,getQueryExecutor
igetTransactionExecutor
. (Iad0ac).
Wersja 2.5.0-alpha02
1 czerwca 2022 r.
Usługa androidx.room:room-*:2.5.0-alpha02
została zwolniona. Wersja 2.5.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nowe artefakty
room-paging
room-paging-rxjava2
,room-paging-rxjava3
iroom-paging-guava
, aby obsługiwać stronicowanie sal (41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/2063).
Zmiany interfejsu API
- Cała platforma
room-runtime
została przekonwertowana z Javy na Kotlin. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/265b/268}Uwaga: z powodu konwersji biblioteki na Kotlin mogą wystąpić problemy ze zgodnością źródła. Jeśli kod znajdował się w Kotlin i wywołał starą wersję pokoju, nowa wersja będzie musiała obsługiwać te przypadki. Na przykład znaną zmianą w przypadku niezgodności źródła jest to, że w zasadzie
InvalidationTracker
musisz zadeklarować parametronInvalidate()
w elemencieObserver
, aby mieć parametr typuSet
, a nieMutableSet
. - Dodano interfejsy API do podawania nazw tabel kluczy i wartości na potrzeby ujednoznacznienia w
@MapInfo
(Icc4b5) - Rozwiąż problem ze zgodnością źródła, aby ponownie zezwolić na
@Ignore
w modułach pobierających usługi. (Ifc2fb)
Poprawki błędów
- Zduplikowany algorytm heurystyczny do rozpoznawania kolumn. Pokoje będą teraz próbowały rozwiązać niejednoznaczne kolumny w zapytaniu z wieloma mapami. Dzięki temu operatory JOIN z tabelami zawierającymi tabele o tej samej nazwie mogą być prawidłowo mapowane na obiekt danych wynikowych. (I4b444, b/201306012, b/212279118)
Wersja 2.5.0-alpha01
23 lutego 2022 r.
Usługa androidx.room:room-*:2.5.0-alpha01
została zwolniona. Wersja 2.5.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozwiązaliśmy problem, który powodował, że użycie sal
@IntDef
nie było wymuszane w źródłach Kotlin. (I75f41, b/217951311) - Rozwiązaliśmy problem ze zgodnością źródła, aby ponownie dopuścić plik
@Query
w modułach pobierających usługi. (I0a09b) - Przekonwertowano pokój-common z Javy na Kotlin. (I69c48, b/206858235)
Uwaga: mogą wystąpić problemy ze zgodnością źródła, ponieważ niektóre właściwości zostały przeniesione do obiektów towarzyszących podczas konwersji biblioteki na Kotlin. Jeśli kod został utworzony w Kotlin i wywołał starą wersję pokoju, nowa wersja będzie potrzebować sufiksu „.Companion” podczas uzyskiwania dostępu do tych usług.
- Migracja sal z Javy do Kotlin została przekonwertowana. (I2724b, b/206858622)
- Skonwertowano
paging
powiązane pliki w usłudzeroom-runtime
z Javy na Kotlin. (I82fc8, b/206859668) - Dodano interfejs API do blokowania i używania wieloprocesowych procesów na poziomie FrameworkSQLite*, aby chronić tworzenie i migracje baz danych w ramach pierwszej sesji obejmującej wiele procesów. (Ied267, b/193182592)
Poprawki błędów
- Dodano obsługę właściwości wewnętrznych w źródłach Kotlin.
Jest to drobna zmiana w działaniu Pokoju, w której będzie używana nazwa źródłowa funkcji podczas dopasowywania ich do właściwości w postaci pobierania/ustawiania (wcześniej używana była nazwa JVM dla funkcji, która jest inna w przypadku funkcji/właściwości wewnętrznych).
Jeśli używasz niestandardowych adnotacji
@JvmName
, aby dopasować metody pobierania/seterów do właściwości prywatnych, dokładnie sprawdź wygenerowany kod po aktualizacji (If6531, b/205289020).
Wersja 2.4.3
Wersja 2.4.3
27 lipca 2022 roku
Usługa androidx.room:room-*:2.4.3
została zwolniona. Wersja 2.4.3 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w pokoju nie rozpoznawały funkcji zawieszania w Kotlin 1.7 (b/236612358).
Wersja 2.4.2
Wersja 2.4.2
23 lutego 2022 r.
Usługa androidx.room:room-*:2.4.2
została zwolniona. Wersja 2.4.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z generowaniem kodu funkcji zawieszania Dao
@Transaction
z treścią, która generuje domyślną metodę interfejsu w wyniku kompilacji z użyciem-Xjvm-default=all
lub równoważnego elementu. (Ia4ce5). - Naprawiono błąd polegający na tym, że pokój generuje kod dla metody zwracania typu
Array<ByteArray>
. (If086e, b/213789489)
Wersja 2.4.1
Wersja 2.4.1
12 stycznia 2022 r.
Usługa androidx.room:room-*:2.4.1
została zwolniona. Wersja 2.4.1 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano obsługę właściwości wewnętrznych w źródłach Kotlin.
Jest to drobna zmiana w działaniu Pokoju, w której będzie używana nazwa źródłowa funkcji podczas dopasowywania ich do właściwości w postaci pobierania/ustawiania (wcześniej używana była nazwa JVM dla funkcji, która jest inna w przypadku funkcji/właściwości wewnętrznych).
Jeśli używasz niestandardowych adnotacji
@JvmName
, aby dopasować metody pobierania/seterów do właściwości prywatnych, dokładnie sprawdź wygenerowany kod po aktualizacji (If6531, b/205289020).
Wersja 2.4.0
Wersja 2.4.0
15 grudnia 2021 roku
Usługa androidx.room:room-*:2.4.0
została zwolniona. Wersja 2.4.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.3.0
- Automatyczne migracje: w pokoju jest teraz dostępny interfejs API do automatycznego generowania migracji, o ile schematy są eksportowane. Aby poinformować pokój o konieczności wygenerowania automatycznej migracji, można użyć nowej usługi
@Database#autoMigrations
do zadeklarowania wersji do automatycznego przenoszenia z i do. Gdy sala potrzebuje dodatkowych informacji na temat zmian nazw lub usuwania tabel i kolumn, adnotacja@AutoMigration
może zadeklarować klasę specyfikacji zawierającą takie dane wejściowe. Więcej informacji znajdziesz w dokumentacji@AutoMigration
. - Wstrzykiwanie zależności w automatycznych migracjach:
@ProvidedAutoMigrationSpec
to nowy interfejs API deklarujący, że interfejsAutoMigrationSpec
będzie udostępniany w czasie działania przezRoomDatabase.Builder#addAutoMigrationSpec()
. Dzięki temu platforma do wstrzykiwania zależności dostarcza takie specyfikacje, gdy potrzebują złożonych zależności. - Pomoc pomocnicza dotycząca testu migracji dla automatycznych migracji: zasób
MigrationTestHelper
pokoju został zaktualizowany, aby obsługiwać automatyczne migracje przez udostępnienie nowego interfejsu API konstruktora, który odbiera testowaną klasę bazy danych. Umożliwi to pomocnikowi automatyczne dodawanie automatycznych migracji w taki sam sposób podczasrunMigrationsAndValidate
. - Obsługa stron pokojowych w wersji 3.0: opublikowaliśmy wersję
androidx.room:room-paging
, która zapewnia natywną obsługę stronicowania w wersji 3.0 w przypadku zapytań o pokoje zwracających wartośćandroidx.paging.PagingSource
. - Relacyjne metody zapytań: sala obsługuje teraz wiele metod zwracanych z użyciem wielu map metod
@Dao
, które są przydatne w przypadku instrukcji JOIN. Obsługiwane typy multimap toMap
,SparseArray
,LongSparseArray
orazImmutableMap
,ImmutableSetMultimap
iImmutableListMultimap
Guawy.
Wersja 2.4.0-rc01
1 grudnia 2021 r.
Usługa androidx.room:room-*:2.4.0-rc01
została zwolniona. Wersja 2.4.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizuj zależność Room od KSP do
1.6.0-1.0.1
, aby zapewnić obsługę Kotlin 1.6
Wersja 2.4.0-beta02
17 listopada 2021 r.
Usługa androidx.room:room-*:2.4.0-beta02
została zwolniona. Wersja 2.4.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- W obiekcie @MapInfo dodaliśmy obsługę obiektów SparseTrack i LongSparseTrack. (IC91a2b/138910317)
Poprawki błędów
- Dodaliśmy nowy analizator typu konwertera, który uwzględnia informacje o wartości null w typach. Ponieważ ta informacja jest dostępna tylko w KSP, jest domyślnie włączona tylko w KSP. Jeśli powoduje to problemy, możesz go wyłączyć, przekazując room.useNullAwareTypeAnalysis=false do procesora adnotacji. Jeśli tak się stanie, zgłoś błąd, bo w przyszłości zostanie ona usunięta. W tym nowym analizatorze TypeConverter zaleca się podawanie tylko takich, które nie mają wartości null, ponieważ nowy analizator ma możliwość dodania do nich wartości null. Pamiętaj, że nie ma to żadnego wpływu na użytkowników korzystających z procesorów adnotacji KAPT lub Java (w przeciwieństwie do KSP) nie mają one w typach informacji o wartości null. (Ia88f9, b/193437407)
- Naprawiono błąd polegający na tym, że pokój nie kompilował się z błędem SQL, gdy jednostka FTS zadeklarowała użycie tokenizatora ICU. (I00db9, b/201753224)
- Rozwiązaliśmy problem z automatycznymi migracjami związany z dodawaniem nowej kolumny do umieszczonego elementu między wersjami. (I5fcb1b/193798291)
- Rozwiązaliśmy problem dotyczący typów zwracanych przez relacyjną metodę zapytań w zapytaniach LEFT JOIN. Po tych zmianach w przypadku mapowania 1-wiele zwracana dla klucza kolekcja zwrócona dla klucza nie będzie zawierała nieprawidłowego obiektu wartości, o ile nie zostanie on znaleziony w kursorze. Jeśli nie zostaną znalezione żadne prawidłowe wartości, klucz zostanie zmapowany na pustą kolekcję. (Id5552b/201946438)
- Rozwiązaliśmy problem z automatyczną migracją, który powodował, że nie udało się zmienić znaczenia słów kluczowych SQLite w nazwach kolumn. (Idbed4b/197133152)
Wersja 2.4.0-beta01
13 października 2021 r.
Usługa androidx.room:room-*:2.4.0-beta01
została zwolniona. Wersja 2.4.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że podczas automatycznej migracji nie dodawało nowych kolumn, gdy inna tabela w tej samej migracji automatycznej również miała nową kolumnę o tej samej nazwie. (Ia5db5, b/200818663)
- Implementacja PagingSource wygenerowana przez stronicowanie pokoju używa teraz elementu
queryExecutor
przekazywanego przezRoomDatabase.Builder
, więc można go zastąpić zamiastDispatchers.IO
wcześniej. (IAE259).
Wersja 2.4.0-alpha05
29 września 2021 r.
Usługa androidx.room:room-*:2.4.0-alpha05
została zwolniona. Wersja 2.4.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano wbudowany konwerter typu dla UUID. (I671e8, b/73132006)
Zmiany interfejsu API
Dodaliśmy do adnotacji TypeConverters nową właściwość, aby umożliwić programistom wyłączenie wbudowanych konwerterów Enum i UUID. Domyślnie te konwertery są włączone, ale możesz je wyłączyć dla określonego zakresu lub dla całej bazy danych. Szczegółowe informacje znajdziesz w dokumentacji TypeConverters. (36ae9e, b/195413406)
Obsługa kluczy/wartości innych niż POJO w przypadku zwracania typów wielu map w DAO przez adnotację
@MapInfo
. (I4d704)
Kolumna @MapInfo
będzie wymagana, gdy kolumna klucza lub wartości na mapie pochodzi z jednej kolumny. Zobacz przykład:
@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>
- Ustaw
room-paging
jako wymagany artefakt, gdy używasz strony 3 z pokojem. (Ieaffe)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że wyniki zapytań obejmujących wiele map nie były prawidłowo uporządkowane, gdy zapytanie zawierało klauzulę ORDER BY dla kolumny z klucza mapy. (I6B887)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano nowy interfejs API do określania kolejności indeksu w @Index. Dzięki Nikity Zhelonkin. (I033fc)
Wersja 2.4.0-alpha04
21 lipca 2021 r.
Usługa androidx.room:room-*:2.4.0-alpha04
została zwolniona. Wersja 2.4.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
Sala obsługuje teraz metody zwracania wielu map w różnych typach
@Dao
, które są przydatne w przypadku instrukcji JOIN. Obsługiwane typy multimap toMap
orazImmutableMap
,ImmutableSetMultimap
iImmutableListMultimap
Guawy.Oto przykłady zapytań multimapowych:
Mapa relacji jeden do jednego
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>
Mapa relacji jeden do wielu (standardowa multimapa)
@Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId") fun getArtistAndAlbums(): Map<Artist, List<Album>>
Wynik multimapowania może być również zawarty w obsługiwanych typach zwracanych asynchronicznych, takich jak
LiveData
,Observable
Rx czy współrzędneFlow
.
Tworzenie pokoju
Udostępniamy usługę
androidx.room:room-paging
, która zapewnia natywną obsługę stronicowania 3.0 w przypadku zapytań o pokoje zwracających wartośćandroidx.paging.PagingSource
.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }
Ten artefakt zastępuje implementację
androidx.paging.PagingSource
wygenerowaną przez pokój inną implementacją opartą na interfejsach API stronicowania 3.0. Nowa implementacja PagingSource analizuje klucze w inny sposób, więc każdy klucz ręcznie dostarczony do strony PagingSource dla pokoju będzie musiał uwzględniać tę zmianę w działaniu, w tym klucz initialKey przekazywany za pomocą konstruktora Pager. Wczytywanie stron rozpocznie się odKey
, przy czym jako pierwszy wczytany będzie elementKey
. Odbiega to od obecnego sposobu działania, w którymLoadParams.Refresh.Key
jest traktowany jako pozycja przewijania użytkownika, a elementy są wczytywane zarówno przed kluczem, jak i po nim.Artefakt jest opcjonalny, a rezygnacja spowoduje przywrócenie dotychczasowej obsługi strony w wersji 3.0 wprowadzonej w pokoju 2.3. W przyszłej wersji ten artefakt nie będzie jednak opcjonalny dla osób korzystających z pokoju ze stronami w wersji 3.0. Aby wyrazić na to zgodę, dodaj nowy artefakt stronicowania sali do ścieżki zajęć. Jeśli używasz Gradle, możesz dodać do pliku build.gradle ten fragment kodu:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
Poprawki błędów
- Naprawiono błąd automatycznej migracji dotyczący obsługi naruszeń kluczy obcych. (B/190113935)
Wersja 2.4.0-alpha03
16 czerwca 2021 r.
Usługa androidx.room:room-*:2.4.0-alpha03
została zwolniona. Wersja 2.4.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zaktualizuj obiekt
MigrationTestHelper
pokoju, aby obsługiwał automatyczne migracje, udostępniając nowy interfejs API konstruktora, który odbiera testowaną klasę bazy danych. Umożliwi to pomocnikowi automatyczne dodawanie automatycznych migracji w taki sam sposób podczasrunMigrationsAndValidate
.
Poprawki błędów
Rozwiązaliśmy problem z natywną biblioteką SQLite w Pokoju, która obsługiwała układy Apple M1. (b/174695268
Rozwiązaliśmy problem, który powodował, że funkcja Room nie zwracała błędów, gdy zwracanym typem funkcji @Transaction był Flow (I56ddd, b/190075899).
Naprawiono błąd dotyczący indeksów w automatycznej migracji. b/177673291
Aktualizacje zależności
- Obsługa klucza KSP pokoju zależy teraz od klucza KSP
1.5.10-1.0.0-beta01
. (1ecb11, b/160322705)
Wersja 2.4.0-alpha02
5 maja 2021 roku
Usługa androidx.room:room-*:2.4.0-alpha02
została zwolniona. Wersja 2.4.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
@ProvidedAutoMigrationSpec
to nowy interfejs API służący do deklarowania, że zasóbAutoMigrationSpec
będzie udostępniany w czasie działania za pomocąRoomDatabase.Builder#addAutoMigrationSpec()
. Dzięki temu platforma do wstrzykiwania zależności dostarcza takie specyfikacje, gdy potrzebują złożonych zależności.
Poprawki błędów
- Rozwiązywanie problemów z automatycznymi migracjami, w przypadku których nie są prawidłowo tworzone obiekty
@DatabaseView
.
Treści tłumaczone przez użytkowników zewnętrznych
- Rozwiąż problem w pokoju
JournalMode.TRUNCATE
, w którym wywołanie zwrotneInvalidationTracker
było czasami wywoływane nieprawidłowo, za późno lub w ogóle nie było możliwe. DziękiUli Bubenheimer | bubenheimer@users.noreply.github.com
(b/154040286)
Wersja 2.4.0-alpha01
21 kwietnia 2021 r.
Usługa androidx.room:room-*:2.4.0-alpha01
została zwolniona. Wersja 2.4.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Automatyczne migracje: w pokoju jest teraz dostępny interfejs API do automatycznego generowania migracji, o ile schematy są eksportowane. Aby poinformować pokój o konieczności wygenerowania automatycznej migracji, można użyć nowej usługi
@Database#autoMigrations
do zadeklarowania wersji do automatycznego przenoszenia z i do. Gdy sala potrzebuje dodatkowych informacji na temat zmian nazw lub usuwania tabel i kolumn, adnotacja@AutoMigration
może zadeklarować klasę specyfikacji zawierającą takie dane wejściowe. Więcej informacji znajdziesz w dokumentacji@AutoMigration
.
Poprawki błędów
- Napraw problem polegający na tym, że pole
defaultValue
z dodatkowym nawiasem było niewłaściwie weryfikowane podczas weryfikacji schematu pokoju. b/182284899
Wersja 2.3.0
Wersja 2.3.0
21 kwietnia 2021 r.
Usługa androidx.room:room-*:2.3.0
została zwolniona. Wersja 2.3.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.2.0
- Wbudowana obsługa wyliczenia: jeśli nie podano żadnej wartości, sala będzie domyślnie używać konwertera typu enum na ciąg znaków i na odwrót. Jeśli istnieje już konwerter typów dla wyliczenia, sala będzie używać go w pierwszej kolejności, a nie domyślnego.
- Wywołanie zwrotne zapytania: w pokoju jest teraz dostępny ogólny interfejs API z wywołaniami zwrotnymi RoomDatabase.QueryCallback, który jest używany przy wykonywaniu zapytań, co może być przydatne przy logowaniu kompilacji debugowania. Oddzwanianie można ustawić w
RoomDatabase.Builder#setQueryCallback()
. - Udoskonalenie gotowe do użycia: sala ma teraz interfejsy API do tworzenia bazy danych na podstawie gotowej bazy danych odczytywanej ze strumienia wejściowego. Pozwala to na przykład na skompresowanie bazy danych gotowej do użycia w pakiecie.
- Udostępnione konwertery typów: pokój ma teraz interfejsy API umożliwiające udostępnianie instancji konwerterów typów, aby aplikacja mogła kontrolować ich inicjowanie. Aby oznaczyć konwerter typu, który zostanie udostępniony do pokoju, użyj nowej adnotacji @ProvidedTypeConverter.
- Obsługa RxJava3: pokój obsługuje teraz typy RxJava3. Podobnie jak w przypadku RxJava2, możesz zadeklarować metody DAO, których typ zwracania to Flowable, Single, może i Competable. Dostępny jest też nowy artefakt
androidx.room:room-rxjava3
do obsługi RxJava3. - Obsługa pozycjonowania 3.0: sala będzie teraz obsługiwać generowanie implementacji dla metod
@Query
z adnotacjami, dla których zwracany jest typandroidx.paging.PagingSource
.
Wersja 2.3.0-rc01
24 marca 2021 r.
Usługa androidx.room:room-*:2.3.0-rc01
została zwolniona. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który uniemożliwiał wykorzystanie zapytań Przepływu Coroutine utworzonych przez pokój w zawieszonym bloku
withTransaction
. (I797bf)
Wersja 2.3.0-beta03
10 marca 2021 r.
Usługa androidx.room:room-*:2.3.0-beta03
została zwolniona. Wersja 2.3.0-beta03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę kompilacji przyrostowej dla KSP. (I031c1, b/176453350)
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że utworzenie PagingSource w wątku głównym mogło powodować błąd ANR. (I42b74, b/181221318)
- Naprawiono widoczność pakietu
@ExperimentalRoomApi
na publiczny, a nie prywatny. (b/181356119)
Treści tłumaczone przez użytkowników zewnętrznych
- Zezwalaj na akceptowanie typu zwrotu POJO w metodzie DAO z adnotacjami
@Query
, gdy jest ona również oznaczona adnotacją@SkipQueryVerification
. Sala dołoży wszelkich starań, aby przekonwertować wynik zapytania na zwracany typ funkcji POJO w taki sam sposób, jak w przypadku metody DAO z adnotacjami@RawQuery
. Dziękujemy „Markus Riegel | hey@marcorei.com” (I45acb).
Wersja 2.3.0-beta02
18 lutego 2021 r.
Usługa androidx.room:room-*:2.3.0-beta02
została zwolniona. Wersja 2.3.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
W pokoju jest teraz dostępna eksperymentalna obsługa KSP przetwarzania symboli Kotlin.
KSP to zamiennik KAPT, który pozwala na natywne uruchamianie procesorów adnotacji w kompilatorze Kotlin, co znacznie skraca czas kompilacji.
Aby używać pokoju z KSP, możesz zastosować wtyczkę do Gradle KSP i zastąpić konfigurację
kapt
w pliku kompilacji kodemksp
. Na przykład zamiastkapt 'androidx.room:room-compiler:2.3.0-beta02'
użyj właściwościksp 'androidx.room:room-compiler:2.3.0-beta02'
. Więcej informacji znajdziesz w dokumentacji KSP.Pamiętaj, że klucz KSP to funkcja eksperymentalna, dlatego zalecamy nadal używać KAPT w kodzie produkcyjnym. Skrócenie czasu kompilacji ma zastosowanie tylko wtedy, gdy żadne inne procesory nie używają KAPT. Informacje o znanych problemach znajdziesz na stronie b/160322705.
Wersja 2.3.0-beta01
27 stycznia 2021 r.
Usługa androidx.room:room-*:2.3.0-beta01
została zwolniona. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Automatycznie zamykane bazy danych: pokój może teraz zamykać bazy danych, do których nie masz dostępu po określonym czasie. To jest funkcja eksperymentalna, którą można włączyć, wywołując metodę
RoomDatabase.Builder#setAutoCloseTimeout()
. Ta funkcja jest przydatna w aplikacjach z wieloma bazami danych.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że metody DAO z kilkoma metodami
@Update
lub@Delete
z różnymi strategiami konfliktu generowały kod tylko z jedną ze strategii, co w praktyce powodowało zignorowanie zdefiniowanej. (/I0b90d, b/176138543)
Wersja 2.3.0-alfa04
16 grudnia 2020 roku
Usługa androidx.room:room-*:2.3.0-alpha04
została zwolniona. Wersja 2.3.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Room oferuje teraz ogólny interfejs API z wywołaniami zwrotnymi
RoomDatabase.QueryCallback
, który jest używany przy wykonywaniu zapytań, co może być przydatne przy logowaniu kompilacji do debugowania. Oddzwanianie można ustawić wRoomDatabase.Builder#setQueryCallback()
. (Iaa513, b/174478034, b/74877608) - W przypadku pomieszczenia będzie teraz domyślnie używać konwertera typu enum na ciąg znaków i na odwrót, jeśli nie zostanie podana żadna wartość. Jeśli istnieje już konwerter typów dla wyliczenia, sala będzie używać go w pierwszej kolejności, a nie domyślnego. (B/73132006)
Znany problem
- Jeśli istnieje już konwerter jednokierunkowy do odczytu dla enum, pokój może przypadkowo użyć wbudowanego konwertera String to Enum, co może być niepożądane. To znany problem, który można rozwiązać, zmieniając tryb konwertera dwukierunkowego. Zobacz: b/175707691
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w nowszych wersjach pakietu JDK usługa Room nieprawidłowo wyłączała przyrostowe przetwarzanie adnotacji. (b/171387388)
- Rozwiązaliśmy problem, który powodował, że sala znajdowała wygenerowaną klasę w przypadku użycia wielu programów ładujących. Dziękujemy za rozwiązanie problemu „Serendipity | 892449346@qq.com”. (b/170141113).
- Rozwiązaliśmy problem, który powodował, że funkcja Room generowała nieprawidłowy kod, gdy obiekt
@Dao
Kotlin miał klasę bazową, której generacje ogólne są elementami podstawowymi w JVM. (B/160258066)
Treści tłumaczone przez użytkowników zewnętrznych
- Jeśli włączony jest tryb WAL, a interfejs API ma wartość 16 lub wyższą, w sali będzie teraz domyślnie używać
beginTransactionNonExclusive
. Dzięki „Ahmedowi I. Khalil | ahmedibrahimkhali@gmail.com’! (b/126258791)
Wersja 2.3.0-alfa03
14 października 2020 r.
Usługa androidx.room:room-*:2.3.0-alpha03
została zwolniona. Wersja 2.3.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
Pokoje mają teraz interfejsy API umożliwiające udostępnianie instancji konwerterów typów, aby aplikacja mogła kontrolować ich inicjowanie. Aby oznaczyć konwerter typu, który zostanie udostępniony do pokoju, użyj nowej adnotacji
@ProvidedTypeConverter
. Dzięki adresowi „mzgreen yairobbe@gmail.com” (Ie4fa5, b/121067210)Pokoje mają teraz interfejsy API do tworzenia bazy danych za pomocą już spakowanej bazy danych odczytanej ze strumienia wejściowego. Pozwala to na przykład na skompresowanie bazy danych gotowej do użycia w pakiecie. Podziękowania od Ahmed El-Helw ahmedre@gmail.com (3e6792, b/146911060)
Zmiany interfejsu API
Dodano brakującą wartość docelową do adnotacji
@ForeignKey
, uniemożliwiając jej użycie poza adnotacją@Entity
. (Iced1e).Pole
mCallbacks
wRoomDatabase.java
jest teraz ukryte. (D576cb, b/76109329)
Poprawki błędów
Aktualizacja dokumentacji TypeConverters, która wyjaśnia, że obiektów TypeConverters można używać tylko do konwertowania kolumn / pól, a nie wierszy. (I07c56, b/77307836)
Zaktualizuj DaoProcessor, aby naprawić błąd kompilatora w Dao za pomocą ogólnego typu supertypu z „elementami podstawowymi” Kotlin. (Ice6bb, b/160258066)
Zaktualizuj dokumentację metod dodawania/usuwania obserwatorów, aby ułatwić zrozumienie wątków (Ifd1d9, b/153948821)
Rozwiązanie problemu polegającego na tym, że pokój nieprawidłowo weryfikuje tabele FTS, które zadeklarowały kolumnę identyfikatora wiersza. (D62ebc, b/145858914)
Treści tłumaczone z zewnątrz
Napraw problemy związane z małymi i wielkimi literami w języku tureckim (5746e3), b/68159494
Zamień
ConcurrentHashMap
wRoomDatabase
naCollections.synchronizedMap()
, by uniknąć problemów na Androidzie Lollipop (d1cfc7, b/162431855)Dodaj wywołanie zwrotne onOpenPrepackagedDatabase podczas kopiowania gotowej bazy danych. (I1ba74, b/148934423)
Wersja 2.3.0-alfa02
22 lipca 2020 r.
Usługa androidx.room:room-*:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alfa02 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa RxJava3: pokój obsługuje teraz typy RxJava3. Podobnie jak w przypadku RxJava2, możesz zadeklarować metody DAO, których typ zwracania to Flowable, Single, może i Competable. Dostępny jest też nowy artefakt
androidx.room:room-rxjava3
do obsługi RxJava3. (b/152427884)
Zmiany interfejsu API
- Deklarowanie
@TypeConverter
w klasie obiektu Kotlin jest teraz obsługiwane. (B/151110764) - Opcja przyrostowego przetwarzania adnotacji w pokoju jest teraz domyślnie WŁĄCZONA. (b/112110217)
Wersja 2.3.0-alfa01
10 czerwca 2020 r.
Usługa androidx.room:room-*:2.3.0-alpha01
została zwolniona. Wersja 2.3.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
Obsługa strony AMP 3.0: sala będzie teraz obsługiwać generowanie implementacji dla
@Query
metod z adnotacjami, dla których zwracany jest typandroidx.paging.PagingSource
.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
Zmiany interfejsu API
@RewriteQueriesToDropUnusedColumns
to nowa, wygodna adnotacja, która sprawia, że rzut „*” w zapytaniu zmienia się w taki sposób, że nieużywane kolumny z wyników są usuwane.- Opcja procesora
room.expandProjection
została wycofana. Używaj usługi@RewriteQueriesToDropUnusedColumns
jako zamiennika zapytań dotyczących optymalizacji sal przy użyciu przewidywanej liczby gwiazdek. Pamiętaj, że funkcja@RewriteQueriesToDropUnusedColumns
nie zastępuje dostępnego rozwiązaniaroom.expandProjection
konfliktu kolumn w przypadku typów zwracanych zawierających pola@Embedded
.
Poprawki błędów
- Naprawiono błąd polegający na tym, że usługa Room nie wykrywała poprawnie wersji JDK używanej do włączania przyrostowego procesora adnotacji. Dzięki Blaz Solar (me@blaz.solar) (b/155215201)
- Aby uniknąć konfliktów wersji z innymi procesorami, które również używają protokołu ANTLR, pokój umieszcza teraz zależność ANTLR na procesorze adnotacji. (B/150106190)
Wersja 2.2.6
Wersja 2.2.6
16 grudnia 2020 roku
Usługa androidx.room:room-*:2.2.6
została zwolniona. Wersja 2.2.6 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że w nowszych wersjach pakietu JDK usługa Room nieprawidłowo wyłączała przyrostowe przetwarzanie adnotacji. (b/171387388)
Wersja 2.2.5
Wersja 2.2.5
18 marca 2020 r.
Usługa androidx.room:room-*:2.2.5
została zwolniona. Wersja 2.2.5 zawiera te zatwierdzenia.
Poprawki błędów
- Włącz funkcję
MultiInstanceInvalidationService
directBootAware. Podziękowania od „Mygod contact-git@mygod.be” (b/148240967) - Naprawiliśmy błąd, który powodował awarię, gdy włączone było unieważnianie wielu instancji, a baza danych zawierała encję FTS. (b/148969394)
- Rozwiązaliśmy problem, który występował podczas wczytywania natywnych bibliotek SQLite w procesorze adnotacji w pokoju, który powodował awarię kompilatora ze względu na kompilację równoległą. (B/146217083)
Wersja 2.2.4
Wersja 2.2.4
19 lutego 2020 r.
Udostępniono 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
i androidx.room:room-testing:2.2.4
. Wersja 2.2.4 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z zawieszaniem transakcji, które powodowały zakleszczenie, jeśli współrzędna została anulowana szybko przed faktycznym rozpoczęciem transakcji. (b/148181325)
- Rozwiązaliśmy problem z nieprawidłowym używaniem tagu @Generated podczas tworzenia za pomocą JDK 9. (B/146538330)
- Rozwiązaliśmy problem, który powodował, że usługa Room generowała nieprawidłowy kod, gdy interfejs DAO w Kotlin miał konkretną funkcję. (b/146825845)
Wersja 2.2.3
Wersja 2.2.3
18 grudnia 2019 r.
Usługa androidx.room:room-*:2.2.3
została zwolniona. Wersja 2.2.3 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiono błąd polegający na tym, że usługa Room nie mogła zweryfikować bazy danych, która nie została poddana żadnej migracji i zawierała w schemacie starszy hasz z indeksami. (B/139306173)
Wersja 2.2.2
Wersja 2.2.2
20 listopada 2019 r.
Usługa androidx.room:room-*:2.2.2
została zwolniona. Wersja 2.2.2 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiono błąd, który powodował, że zbieranie relacji 1:1 z ponad 999 wierszami powodowało zwracanie przez pokój powiązanych elementów o wartości null. (B/143105450)
Wersja 2.2.1
Wersja 2.2.1
23 października 2019 r.
Usługa androidx.room:room-*:2.2.1
została zwolniona. Wersja 2.2.1 zawiera te zatwierdzenia.
Poprawki błędów.
- Naprawiono błąd polegający na tym, że pokój błędnie ostrzegał o kodzie
CURSOR_MISMATCH
przy włączonej opcji kompilatoraexpandProjection
. (b/140759491) - Dodano mechanizm ponawiania prób obsługi brakującej biblioteki natywnej używanej do weryfikacji zapytań podczas kompilowania.
Wersja 2.2.0
Wersja 2.2.0
9 października 2019 r.
Usługa androidx.room:room-*:2.2.0
została zwolniona. Wersja 2.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.1.0
- Gotowa baza danych: dostępne są dwa nowe interfejsy API w
RoomDatabase.Builder
do tworzeniaRoomDatabase
dla już wypełnionego pliku bazy danych.createFromAsset()
oznacza, że wstępnie wypełniony plik bazy danych znajduje się w folderze zasobów w pakiecie APK, acreateFromFile()
– gdy plik znajduje się w dowolnej lokalizacji. Sposób użycia tych interfejsów API zmienia działanie szkodliwych migracji i podczas migracji awaryjnej Room próbuje ponownie skopiować wstępnie wypełnioną bazę danych, jeśli jest dostępna. W przeciwnym razie system cofnie się do usunięcia i ponownego utworzenia wszystkich tabel. b/62185732 - Domyślne wartości schematu:
@ColumnInfo
ma teraz nową właściwośćdefaultValue
, która może służyć do określania domyślnej wartości kolumny. Wartości domyślne są częścią schematu bazy danych i będą weryfikowane podczas migracji, jeśli zostaną określone. b/64088772 - Relacje wiele do wielu:
@Relation
ma teraz nową właściwośćassociateBy
, która przyjmuje nową adnotację@Junction
służącą do zadeklarowania relacji, którą należy spełnić za pomocą tabeli połączeń (tzw. tabeli łączenia). b/69201917 - Relacje 1:1: W polach POJO oznaczonych adnotacją
@Relation
typuList
lubSet
zostało zniesione ograniczenie, co umożliwia reprezentowanie relacji pojedynczych wartości. b/62905145 - Jednostka docelowa: adnotacje DAO
@Insert
,@Update
i@Delete
mają teraz nową właściwośćtargetEntity
, która umożliwia określenie tabeli docelowej, do której ma działać metoda DAO. Dzięki temu parametry tych metod DAO mogą być zwykłymi obiektami POJO, które są interpretowane jako częściowe jednostki. W praktyce umożliwia to częściowe wstawianie, usuwanie i aktualizacje. b/127549506 - Przepływ koronek: metody DAO (
@Query
) mogą teraz zwracać typ zwracanyFlow<T>
. Jeśli tabele obserwacji w zapytaniu zostaną unieważnione, zwrócony przepływ ponownie utworzy nowy zbiór wartości. Zadeklarowanie funkcji DAO ze zwrotem typuChannel<T>
jest błędem. Zamiast tego funkcja Room zachęca do użyciaFlow
, a następnie użycia sąsiednich funkcji do skonwertowaniaFlow
naChannel
. b/130428884 - Procesor adnotacji przyrostowych Gradle: sala jest teraz procesorem izolującym adnotacje w Gradle. Możliwość zwiększania wartości można włączyć za pomocą opcji procesora
room.incremental
. Więcej informacji znajdziesz w artykule Opcje narzędzia do kompilacji sal. W razie problemów zgłoś błąd tutaj. Planujemy domyślnie włączyć możliwość przyrostowego poziomu w przyszłej wersji stabilnej. b/112110217 - Prognozy rozwijane: dodaliśmy nową eksperymentalną opcję kompilatora
room.expandProjection
, która sprawia, że usługa Room przepisuje zapytanie z odwzorowaniem gwiazdy tak, aby zawierała tylko kolumny powracającego typu POJO. Na przykład w przypadku metody DAO z funkcją@Query("SELECT * FROM Song")
, która zwraca POJO o nazwieSongIdAndTitle
z samymi 2 polami. Następnie Room zmieni zapytanie naSELECT id, title FROM Song
tak, aby pobrać minimalny zestaw kolumn odpowiadających typowi zwróconemu. Zasadniczo eliminuje to ostrzeżenieCURSOR_MISMATCH
wyświetlane, gdy zapytanie zwraca dodatkowe kolumny, które nie pasują do żadnego pola w zwracającym typie POJO.
Wersja 2.2.0-rc01
5 września 2019 r.
Usługa androidx.room:room:2.2.0-rc01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Brak zmian publicznych od sali 2.2.0-beta01
.
Wersja 2.2.0-beta01
22 sierpnia 2019 r.
Usługa androidx.room:room-*:2.2.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
- Naprawiliśmy błąd polegający na tym, że zapytanie Przepływ Coroutine po pewnym czasie przestaje wysyłać nowe wartości. (b/139175786)
- Naprawiono błąd polegający na tym, że usługa Room nie akceptowała starszego kodu skrótu schematu po otwarciu bazy danych, która nie została przeniesiona od wersji 1.0, co powodowało awarię w czasie działania z powodu nieprawidłowego schematu. (B/139306173)
Wersja 2.2.0-alfa02
7 sierpnia 2019 r.
Usługa androidx.room:room-*:2.2.0-alpha02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Przepływ koronek: metody DAO (
@Query
) mogą teraz zwracać typ zwracanyFlow<T>
. Jeśli tabele obserwacji w zapytaniu zostaną unieważnione, zwrócony przepływ ponownie utworzy nowy zbiór wartości. Zadeklarowanie funkcji DAO ze zwrotem typuChannel<T>
jest błędem. Zamiast tego funkcja Room zachęca do użyciaFlow
, a następnie użycia sąsiednich funkcji do skonwertowaniaFlow
naChannel
. b/130428884 - Prognozy rozwijane: dodaliśmy nową eksperymentalną opcję kompilatora
room.expandProjection
, która sprawia, że usługa Room przepisuje zapytanie z odwzorowaniem gwiazdy tak, aby zawierała tylko kolumny powracającego typu POJO. Na przykład w przypadku metody DAO z funkcją@Query("SELECT * FROM Song")
, która zwraca POJO o nazwieSongIdAndTitle
z samymi 2 polami. Następnie Room zmieni zapytanie naSELECT id, title FROM Song
tak, aby pobrać minimalny zestaw kolumn odpowiadających typowi zwróconemu. Zasadniczo eliminuje to ostrzeżenieCURSOR_MISMATCH
wyświetlane, gdy zapytanie zwraca dodatkowe kolumny, które nie pasują do żadnego pola w zwracającym typie POJO. onDestructiveMigrate
to nowy interfejs API z wywołaniem zwrotnym dodany doRoomDatabase.Callback
na potrzeby niszczycielskiej migracji bazy danych. b/79962330
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że usługa Room generowała nieprawidłowy kod przy użyciu metody jako narzędzia do ustawiania pól, gdy pole było chronione. b/136194628
- Naprawiliśmy błąd, który powodował, że narzędzie invalidationTracker zgłaszało NPE w drugim procesie, gdy włączone było unieważnianie wielu instancji, a usługa unieważniania została przerwana. b/137454915
- Naprawiono błąd, który powodował, że funkcja Room nie mogła poprawnie zidentyfikować typu zwracania dziedziczonej funkcji zawieszania oznaczonej adnotacją
@RawQuery
. b/137878827 - Zaktualizowaliśmy wygenerowany kod dla
@Relation
, gdy powiązany klucz jest typu BLOB, tak aby używał porównywalnej wartościByteBuffer
. b/137881998 - Naprawiono błąd, który powodował, że w Pokoju wyświetlane były skargi na brakujące osoby w POJO, które były używane jako parametry jednostek częściowych w
@Insert
,@Update
i@Delete
. b/138664463 - Naprawiliśmy błąd polegający na tym, że usługa Room narzewała na brakujące metody pobierania i seterów dla ignorowanej kolumny za pomocą parametru
@Entity
, gdy w określonych metodach DAO była używana klasa encji. b/138238182 - Naprawiono błąd, który powodował, że usługa Room nie konwertowała prawidłowo nazwanych argumentów powiązania na argumenty pozycji, co powodowało wyjątek środowiska wykonawczego podczas wykonywania zapytania z ponownie użytymi parametrami. b/137254857
Wersja 2.2.0-alpha01
10 lipca 2019 r.
Nowe funkcje
- Gotowa baza danych: dostępne są dwa nowe interfejsy API w
RoomDatabase.Builder
do tworzeniaRoomDatabase
dla już wypełnionego pliku bazy danych.createFromAsset()
oznacza, że wstępnie wypełniony plik bazy danych znajduje się w folderze zasobów w pakiecie APK, acreateFromFile()
– gdy plik znajduje się w dowolnej lokalizacji. Sposób użycia tych interfejsów API zmienia działanie szkodliwych migracji i podczas migracji awaryjnej Room próbuje ponownie skopiować wstępnie wypełnioną bazę danych, jeśli jest dostępna. W przeciwnym razie system cofnie się do usunięcia i ponownego utworzenia wszystkich tabel. b/62185732 - Domyślne wartości schematu:
@ColumnInfo
ma teraz nową właściwośćdefaultValue
, która może służyć do określania domyślnej wartości kolumny. Wartości domyślne są częścią schematu bazy danych i będą weryfikowane podczas migracji, jeśli zostaną określone. b/64088772Uwaga: jeśli schemat bazy danych ma już wartości domyślne, np. te dodane za pomocą
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
, i chcesz zdefiniować wartości domyślne za pomocą@ColumnInfo
w tych samych kolumnach, konieczne może być przeprowadzenie migracji w celu zweryfikowania nieuwzględnionych wartości domyślnych. Więcej informacji znajdziesz w artykule na temat migracji sal. - Relacje wiele do wielu:
@Relation
ma teraz nową właściwośćassociateBy
, która przyjmuje nową adnotację@Junction
służącą do zadeklarowania relacji, którą należy spełnić za pomocą tabeli połączeń (tzw. tabeli łączenia). b/69201917 - Relacje 1:1: W polach POJO oznaczonych adnotacją
@Relation
typuList
lubSet
zostało zniesione ograniczenie, co umożliwia reprezentowanie relacji pojedynczych wartości. b/62905145 - Jednostka docelowa: adnotacje DAO
@Insert
,@Update
i@Delete
mają teraz nową właściwośćtargetEntity
, która umożliwia określenie tabeli docelowej, do której ma działać metoda DAO. Dzięki temu parametry tych metod DAO mogą być zwykłymi obiektami POJO, które są interpretowane jako częściowe jednostki. W praktyce umożliwia to częściowe wstawianie, usuwanie i aktualizacje. b/127549506 - Procesor adnotacji przyrostowych Gradle: sala jest teraz procesorem izolującym adnotacje w Gradle. Możliwość zwiększania wartości można włączyć za pomocą opcji procesora
room.incremental
. Więcej informacji znajdziesz w artykule Opcje narzędzia do kompilacji sal. W razie problemów zgłoś błąd tutaj. Planujemy domyślnie włączyć możliwość przyrostowego poziomu w przyszłej wersji stabilnej. b/112110217
Poprawki błędów
- Pokoje nie będą już przekazywać obiektu
EmptySetResultException
do globalnego modułu obsługi błędów, gdy strumień Rx zapytania zostanie usunięty przed zakończeniem zapytania. b/130257475 - Naprawiono błąd, przez który w pokoju wyświetlał się nieprawidłowy komunikat o błędzie, gdy funkcja zawieszenia DAO z adnotacją
@RawQuery
nie miała zwracanego typu. b/134303897 - Sala nie będzie już generować adapterów DAO w nieprzetworzonych typach. b/135747255
Wersja 2.1.0
Wersja 2.1.0
13 czerwca 2019 r.
Zwolniono pokój 2.1.0 bez zmian w pokoju 2.1.0-rc01
. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Ważne zmiany wprowadzone od wersji 2.0.0
- FTS: sala obsługuje teraz elementy z tabelą mapowania FTS3 lub FTS4. Do klas z adnotacjami
@Entity
można teraz dodatkowo dodać adnotacje za pomocą@Fts3
lub@Fts4
, aby zadeklarować klasę przy użyciu tabeli wyszukiwania pełnotekstowego mapowania. Opcje FTS umożliwiające dalsze dostosowanie są dostępne za pomocą metod adnotacji. - Widoki: sala obsługuje teraz deklarowanie klasy jako zapisanego zapytania (nazywanego też widokiem) przy użyciu adnotacji
@DatabaseView
. - Sytuacje: metody DAO mogą teraz być zawieszanymi funkcjami. Aby korzystać z tej funkcji, uwzględnij w zależnościach atrybut
room-ktx
. Artefakt ktx udostępnia też funkcję rozszerzeniaRoomDatabase.withTransaction
do wykonywania transakcji związanych z bazą danych w ramach współrzędu. - Wartość automatyczna: pokój obsługuje teraz deklarowanie klas z adnotacjami AutoValue jako elementów i zamówień POJO. Adnotacje do sal
@PrimaryKey
,@ColumnInfo
,@Embedded
i@Relation
można teraz zadeklarować w abstrakcyjnych metodach klasy z adnotacjami automatycznymi. Aby pokój prawidłowo zinterpretował te informacje, musisz też dołączyć do nich atrybut@CopyAnnotations
. - Dodatkowa obsługa asynchroniczna: metody DAO z adnotacjami
@Insert
,@Delete
lub@Update
wraz z@Query
zawierającymi instrukcjeINSERT
,DELETE
lubUPDATE
obsługują teraz zwroty RxCompletable
,Single
,Maybe
i typ zwrotuListenableFuture
Guawy. Mogą one również być funkcjami zawieszania. enableMultiInstanceInvalidation
to nowy interfejs API w językuRoomDatabase.Builder
, który umożliwia unieważnienie wielu instancji RoomDatabase przy użyciu tego samego pliku bazy danych.fallbackToDestructiveMigrationOnDowngrade
to nowy interfejs API wRoomDatabase.Builder
, który automatycznie odtwarza bazę danych w przypadku przejścia na niższą wersję.ignoredColumns
to nowy interfejs API w adnotacji@Entity
, którego można używać do wyświetlania listy ignorowanych pól według nazwy.- Sala będzie teraz prawidłowo używać głównego konstruktora Kotlina w klasach danych, dzięki czemu nie trzeba będzie deklarować właściwości jako
vars
.
Wersja 2.1.0-rc01
29 maja 2019 r.
Poprawki błędów
- Usunięto błąd inicjowania pokoju, który mógł wystąpić z powodu już skonfigurowanej konfiguracji temp_store. b/132602198
- Naprawiono ostrzeżenie o podwójnym cudzysłowie w przypadku użytkowników SQLite w wersji 3.27.0 lub nowszej. b/131712640
- Naprawiliśmy błąd, który powodował awarię funkcji Nieprawidłowy plik cookie w przypadku jednoczesnego przeprowadzania wielu kontroli nieprawidłowości. b/133457594
Wersja 2.1.0-beta01
7 maja 2019 r.
Udostępniono pakiet androidx.room 2.1.0-beta01
bez zmian od wersji 2.1.0-alfa. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Wersja 2.1.0-alpha07
25 kwietnia 2019 r.
Zmiany interfejsu API / działania
- Funkcja rozszerzenia
RoomDatabase.withTransaction
została zmieniona tak, aby nie przyjmować już bloku funkcji z odbiornikiemCoroutineScope
. Zapobiega to pomijaniu dodatkowego koducoroutineScope { }
wymaganego do jednoczesnego uruchamiania elementów w bloku transakcji.
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że pokój nie mógł dopasować elementu TypeConverter dla funkcji DAO Kotlin zawierającej parametr typu kolekcji. b/122066791
Wersja 2.1.0-alpha06
22 marca 2019 r.
Zmiany interfejsu API / działania
- Zapytania dotyczące transakcji asynchronicznych są teraz serializowane, dzięki czemu pokój nie będzie używać więcej niż 1 wątku do wykonywania transakcji bazy danych.
Dodano
RoomDatabase.Builder.setTransactionExecutor(Executor)
, aby umożliwić skonfigurowanie wykonawcy, który będzie używany do transakcji. RoomDatabase.runInTransaction(Callable)
nie będzie już dodawać zaznaczonych wyjątków do wyjątków środowiska wykonawczego. b/128623748
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że narzędzie do śledzenia unieważnień przestawało obserwować tabelę treści, gdyby dodano obserwatorzy zarówno w tabeli treści, jak i w zewnętrznej tabeli FTS treści. b/128508917
- Gramatyka SQLite została zaktualizowana, tak aby była zgodna z gramatyką SQLite w wersji 3.24.0. b/110883668
Wersja 2.1.0-alpha05
13 marca 2019 r.
Nowe funkcje
- Funkcja rozszerzenia
RoomDatabase.withTransaction
umożliwia bezpieczne przeprowadzanie transakcji na bazie danych w ramach współrzędu. Funkcje rozszerzeń sal oraz obsługa współrzędnych są dostępne w artefakcieroom-ktx
. - Nieabstrakcyjne metody DAO oznaczone adnotacjami
@Transaction
można teraz zawieszać funkcje. b/120241587
Zmiany interfejsu API / działania
- Nazwa artefaktu
room-coroutines
została zmieniona naroom-ktx
. Nazwa jest taka sama jak w przypadku innych artefaktów Androidax. - Funkcje
beginTransaction
,setTransactionSuccessful
iendTransaction
w domenieRoomDatabase
zostały wycofane i zastąpione przez funkcjęrunInTransaction
oraz funkcję rozszerzeniaroom-ktx
withTransaction
.
Poprawki błędów
- Naprawiono błąd, który powodował, że argumenty tokenizatora były pomijane, jeśli używany był tokenizacyjny SIMPLE. b/125427014
- Naprawiliśmy błąd polegający na tym, że usługa Room nie mogła poprawnie rozpoznawać funkcji zawieszania z parametrami, które były klasą wewnętrzną. b/123767877
- Naprawiliśmy błąd polegający na tym, że odroczona metoda DAO
@Query
z instrukcjamiINSERT
,UPDATE
lubDELETE
z zaangażowaniem przygotowywała zapytanie w wątku głównym. b/123695593 - Naprawiliśmy różne błędy powodujące, że usługa Room generowała nieprawidłowy kod dla niektórych funkcji zawieszania. b/123466702 i b/123457323
- Naprawiono błąd, który powodował, że wycofane metody nie były prawidłowo pomijane w wygenerowanym kodzie. b/117602586
- Zaktualizowano zależność pokoju androidx.sqlite do wersji 1.0.2. Zawiera ona poprawki pozwalające na prawidłową obsługę uszkodzonych baz danych. b/124476912
Znane problemy
- Sala 2.1.0-alfa05 zależy od artefaktu
kotlinx-metadata-jvm
, który nie jest obecnie dostępny w Maven Central (KT-27991). Tę zależność można rozwiązać, dodającmaven { url "https://kotlin.bintray.com/kotlinx/" }
do repozytoriów projektów.
Wersja 2.1.0-alfa04
25 stycznia 2019 r.
Nowe funkcje
- Metody DAO z adnotacjami
@Query
zawierającymi instrukcjeINSERT
,UPDATE
lubDELETE
mogą teraz zwracać typy asynchroniczneSingle
,Mayble
,Completable
iListenableFuture
. Mogą one też zawieszać funkcje. b/120227284
Zmiany interfejsu API / działania
- Sala zgłosi błąd, jeśli nieabstrakcyjna metoda DAO z adnotacją
@Transaction
zwróci typ asynchroniczny, taki jakSingle
,Mayble
,Completable
,LiveData
lubListenableFuture
. Transakcje są ograniczone do wątku, dlatego obecnie nie można rozpocząć ani zakończyć transakcji wokół funkcji, która mogłaby wykonywać zapytania w różnych wątkach. b/120109336 - Reguły
OnConflictStrategy.FAIL
iOnConflictStrategy.ROLLBACK
mają stan@Deprecated
, ponieważ nie działają zgodnie z oczekiwaniami z obecnymi powiązaniami SQLite z Androidem. b/117266738
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że usługa Room nie używała poprawnie narzędzia TypeConverter zwracanego typu, jeśli metoda DAO była funkcją zawieszenia. b/122988159
- Naprawiono błąd, który powodował nieprawidłowe oznaczanie odziedziczonych funkcji zawieszania w pokoju jako niezawieszonych. b/122902595
- Naprawiliśmy błąd polegający na tym, że sala generowała nieprawidłowy kod, gdy pole
@Embedded
znajdowało się w klasie nadrzędnej i było używane w wielu klasach podrzędnych. b/121099048 - Rozwiązaliśmy problem polegający na tym, że podczas wywoływania funkcji zawieszania DAO między wywołaniami
beginTransaction()
iendTransaction()
baza danych blokowała się. b/120854786
Wersja 2.1.0-alfa03
4 grudnia 2018 r.
Zmiany interfejsu API
- Element FTS
tokenizer
w języku@Fts3
/@Fts4
przyjmuje teraz ciąg znaków, a nie enum. Dzięki temu Sala może korzystać z niestandardowych tokenizerów. Wbudowane tokenery są nadal zdefiniowane wFtsOptions
jako stałe ciągi znaków. b/119234881
Nowe funkcje
- Sytuacje: metody DAO mogą teraz być zawieszanymi funkcjami. Aby obsługiwać funkcje zawieszania w pokoju, opublikowaliśmy nowy artefakt
room-coroutines
. b/69474692 - Metody DAO z adnotacjami
@Insert
,@Delete
lub@Update
obsługują teraz jako zwracany typ zwrotuListenableFuture
. b/119418331
Poprawki błędów
- Naprawiono błąd polegający na tym, że usługa Room nieprawidłowo próbowała znaleźć konstruktor z kolumnami we właściwości
ignoredColumns
właściwości@Entity
. b/119830714 - Naprawiono błąd, przez który usługa Room nie oznaczała parametrów metody DAO jako ostatecznej podczas generowania wygenerowanej implementacji. b/118015483
- Naprawiono błąd, który powodował awarię procesora pokoju podczas zgłaszania błędu dotyczącego zapytania ze specjalnymi symbolami. b/119520136
- Naprawiono błąd, który powodował odrzucanie innych implementacji
Collection
jako argumentów wyrażeniaIN
. b/119884035 - Poprawiliśmy błąd, który powodował, że dane LiveData zwracane z pokoju były usuwane po zaobserwowaniu w nieskończoność. Powoduje to, że dane nie będą już emitowały nowych danych. b/74477406
- Zaktualizowano blokadę zamknięcia urządzenia
RoomDatabase
, aby zmniejszyć rywalizację o blokadę. b/117900450
Wersja 2.1.0-alfa02
30 października 2018 r.
Nowe funkcje
- Dodano obsługę odwołań do
@DatabaseView
w@Relation
. b/117680932
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że usługa Room wykonywała operację wejścia-wyjścia dysku w wątku głównym podczas subskrybowania i usuwania danych zwracanych przez żądanie Rx. b/117201279
- Naprawiliśmy błąd, który powodował, że usługa Room nie znalazła odpowiedniego konwertera typu dla pola w klasie encji Kotlin. b/111404868
- Naprawiliśmy błąd polegający na tym, że usługa Room generowała nieprawidłowy kod dla implementacji interfejsu
DAO
zawierającej domyślną metodę Kotlin, która nie ma argumentów. b/117527454 - Zaktualizowano parser gramatyki SQLite w pokoju, naprawiono problem z wydajnością, który wydłużał czas kompilacji. b/117401230
Wersja 2.1.0-alpha01
8 października 2018 r.
Nowe funkcje
- FTS: sala obsługuje teraz elementy z mapowaną tabelą FTS3 lub FTS4. Do klas z adnotacjami
@Entity
można teraz dodatkowo dodać adnotacje za pomocą@Fts3
lub@Fts4
, aby zadeklarować klasę przy użyciu tabeli wyszukiwania pełnotekstowego mapowania. Opcje FTS umożliwiające dalsze dostosowanie są dostępne za pomocą metod adnotacji. b/62356416 - Widoki: sala obsługuje teraz deklarowanie klasy jako zapisanego zapytania, znanego też jako widok z użyciem adnotacji @DatabaseView. b/67033276
- Wartość automatyczna: pokój obsługuje teraz deklarowanie klas z adnotacjami Wartość automatyczna jako elementów i zamówień POJO. Adnotacje do sal
@PrimaryKey
,@ColumnInfo
,@Embedded
i@Relation
można teraz zadeklarować w abstrakcyjnych metodach klasy z adnotacjami z wartościami automatycznymi. Aby pokój prawidłowo zinterpretował te adnotacje, do tych adnotacji należy dołączyć także atrybut@CopyAnnotations
. b/62408420 - Dodatkowa obsługa typów zwrotów Rx: metody DAO oznaczone adnotacjami
@Insert
,@Delete
lub@Update
obsługują teraz zwroty RxCompletable
,Single<T>
iMaybe<T>
. b/63317956 - Typy stałe za pomocą funkcji
@Relation
: wcześniej sala wymagała możliwości skonfigurowania pól z adnotacjami@Relation
, ale teraz mogą one być parametrami konstruktora. enableMultiInstanceInvalidation
: to nowy interfejs API w wersjiRoomDatabase.Builder
, który umożliwia unieważnianie wielu instancji RoomDatabase przy użyciu tego samego pliku bazy danych. Mechanizm unieważniania na wiele instancji działa też w wielu procesach. b/62334005fallbackToDestructiveMigrationOnDowngrade
: jest nowym interfejsem API w wersjiRoomDatabase.Builder
, który automatycznie odtwarza bazę danych w przypadku przejścia na niższą wersję. b/110416954ignoredColumns
: to nowy interfejs API w adnotacji@Entity
, którego można używać do wyświetlania listy ignorowanych pól według nazwy. Przydatny do ignorowania dziedziczonych pól elementu. b/63522075
Zmiany interfejsu API / działania
mCallback
imDatabase
w pokojuRoomDatabase
to teraz@Deprecated
i zostaną usunięte w następnej głównej wersji pokoju. b/76109329
Poprawki błędów
- Rozwiązaliśmy 2 problemy, które powodowały, że pokoje nie były prawidłowo przywracane z uszkodzonej bazy danych lub nieprawidłowej migracji podczas inicjowania. b/111504749 i b/111519144
- Sala będzie teraz prawidłowo używać głównego konstruktora Kotlina w klasach danych, dzięki czemu nie będzie trzeba deklarować pól jako
vars
. b/105769985
Wersja 2.0.0
Wersja 2.0.0
1 października 2018 r.
Udostępniono pakiet androidx.room 2.0.0
bez zmian w wersji 2.0.0-rc01.
Wersja 2.0.0-rc01
20 września 2018 r.
Wersja androidx.room 2.0.0-rc01
została udostępniona bez zmian od wersji 2.0.0-beta01.
Wersja 2.0.0-beta01
2 lipca 2018 r.
Zmiany interfejsu API / działania
- Dodano
RoomDatabase.Builder.setQueryExecutor()
, aby umożliwić dostosowanie miejsca uruchamiania zapytań - Dodano obsługę RxJava2
Observable
- Wygenerowane implementacje DAO i bazy danych są już gotowe
Poprawki błędów
- Określ nazwę klasy/pola w błędzie „nie można znaleźć metody pobierania pola” b/73334503
- Poprawiono zgodność wsteczną RoomOpenHelper ze starszymi wersjami pokoi b/110197391.
Zależności sprzed AndroidaX
W przypadku wersji Room sprzed Androida X uwzględniaj te zależności:
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"
}
Wersja 1.1.1
Wersja 1.1.1
19 czerwca 2018 r.
Sala 1.1.1
jest taka sama jak sala 1.1.1-rc1
.
Wersja 1.1.1-rc1
16 maja 2018 r.
Jeśli używasz migracji, zdecydowanie zalecamy używanie sali 1.1.1-rc1
zamiast 1.1.0
.
Usunęliśmy błąd, przez który pokój nie obsługiwał prawidłowo po migracji inicjowania b/79362399
Wersja 1.1.0
Wersja 1.1.0-beta3
19 kwietnia 2018 r.
Poprawki błędów
- Poprawianie błędu kompilacji, gdy poJO Kotlin odwołuje się do jednostki relacji zdefiniowanej w Javie b/78199923
Wersja 1.1.0-beta2
5 kwietnia 2018 r.
Poprawki błędów
Naprawiliśmy błąd krytyczny w implementacjach Rx
Single
iMaybe
w pokoju, w wyniku których zapytanie z wyprzedzeniem powodowało recykling zapytania, co powodowało problemy w przypadku dodania więcej niż 1 obserwatora do zwróconych wywołańSingle
lubMaybe
. b/76031240[RoomDatabase.clearAllTables][ref-clearAllTables] nie
VACUUM
wywoła bazy danych, jeśli jest wywoływana w ramach transakcji. b/77235565
Wersja 1.1.0-beta1
21 marca 2018 r.
Zmiany interfejsu API
- Z opinii wynika, że interfejs
@RawQuery
nie akceptuje już przekazywaniaString
jako parametru zapytania. Musisz użyć zapytania [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (zobacz [SimpleSQLiteQuery][ref-SimpleSQLiteQuery], aby łatwo utworzyć instancję [SupportSQLiteQuery][ref-SupportSQLiteQuery] z obsługą argumentów). - Metoda [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] RoomDatabase.Builder akceptuje teraz
vararg int
zamiastvararg Integer
.
Poprawki błędów
- [RoomDatabase.clearAllTables][ref-clearAllTables] próbuje teraz przywrócić miejsce z powrotem do systemu operacyjnego przez ustawienie punktu kontrolnego WAL i
VACUUM
uruchomienie bazy danych. - [
@RawQuery
][ref-RawQuery] akceptuje teraz dowolne pole Pojo dla właściwościobservedEntities
, o ile odwołuje się do co najmniej 1 encji za pomocą pólEmbedded
lubRelation
. b/74041772 - Stronicowanie: implementacja DataSource w pokoju prawidłowo obsługuje teraz zależności wielu tabel (takie jak relacje i złączenia). Wcześniej nie powodowały one generowania nowych wyników lub mogły się nie skompilować. b/74128314
Wersja 1.1.0-alfa1
22 stycznia 2018 r.
Nowe funkcje
RawQuery
: ten nowy interfejs API umożliwia metodom@Dao
otrzymywanie kodu SQL jako parametru zapytania b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: ten nowy interfejs API w wersjiRoomDatabase.Builder
zapewnia bardziej precyzyjną kontrolę nad tym, z których początkowych wersji schematu dozwolone są migracje do niszczycielskich wersji schematu (w porównaniu z funkcją zastępczym ToDestructiveMigration). b/64989640- Sala obsługuje teraz tylko nowsze interfejsy API stronicowania (alfa 4 lub nowsze), rezygnując z obsługi wycofanego interfejsu
LivePagedListProvider
. Aby korzystać z nowej wersji alfa pokoju, musisz użyć stronicowaniaalpha-4
lub nowszego i przełączyć się zLivePagedListProvider
naLivePagedListBuilder
, jeśli jeszcze nie zostało to zrobione.
Poprawki błędów
- Ulepszona obsługa typów Kotlin Kapt. b/69164099
- Kolejność pól nie unieważnia już schematu. b/64290754