Room

Biblioteka trwałości pokoi zapewnia warstwę abstrakcji zamiast SQLite, co pozwala zapewnić lepszy dostęp do bazy danych i wykorzystać pełne możliwości SQLite.
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.

Tworzenie nowego numeru

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 na SQLite, a BundledSQLiteKt na BundledSQLite. (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żywania AndroidSQLiteDriver.

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 implementacji RoomDatabase. 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 element RoomDatabase można skonfigurować tylko z wykonawcami korzystającymi z setQueryExecutor 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 interfejsie SQLite 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 i RoomDatabase.useWriterConnection.
  • Wywołania zwrotne związane z usługą Varios Room mają teraz przeciążoną wersję, która otrzymuje SQLiteConnection zamiast SupportSQLiteDatabase. 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 artefaktem androidx.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 element LoadStateUpdate z LoadResult.Error zawierający obiekt typu Throwable. Ten stan błędu można zaobserwować w PagingDataAdapter.loadStateFlow(Views) lub LazyPagingItems.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ątek 2067 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 parametru columnName 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, interfejs withTransaction() został zrefaktoryzowany, aby nie polegał już na zadaniu sterującym. Zamiast tego uruchomi blok zawieszenia transakcji z poziomu runBlocking 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 zasadzie InvalidationTracker musisz zadeklarować parametr onInvalidate() w elemencie Observer, aby mieć parametr typu Set, a nie MutableSet. 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 i room-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 zamiast IllegalStateException. (I328dd)
  • Popraw niezgodną zmianę źródła Kotlin w metodach pobierania / właściwości getOpenHelper, getQueryExecutor i getTransactionExecutor. (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

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ć parametr onInvalidate() w elemencie Observer, aby mieć parametr typu Set, a nie MutableSet.

  • 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łudze room-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 interfejs AutoMigrationSpec będzie udostępniany w czasie działania przez RoomDatabase.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 podczas runMigrationsAndValidate.
  • 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 to Map, SparseArray, LongSparseArray oraz ImmutableMap, ImmutableSetMultimap i ImmutableListMultimap 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 przez RoomDatabase.Builder, więc można go zastąpić zamiast Dispatchers.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

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 to Map oraz ImmutableMap, ImmutableSetMultimap i ImmutableListMultimap 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ędne Flow.

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ę od Key, przy czym jako pierwszy wczytany będzie element Key. Odbiega to od obecnego sposobu działania, w którym LoadParams.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 podczas runMigrationsAndValidate.

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ób AutoMigrationSpec 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 zwrotne InvalidationTracker było czasami wywoływane nieprawidłowo, za późno lub w ogóle nie było możliwe. Dzięki Uli 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 typ androidx.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

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 kodem ksp. Na przykład zamiast kapt 'androidx.room:room-compiler:2.3.0-beta02' użyj właściwości ksp '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ć w RoomDatabase.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 w RoomDatabase.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 w RoomDatabase na Collections.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 typ androidx.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ązania room.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 kompilatora expandProjection. (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 tworzenia RoomDatabase 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, a createFromFile() – 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 typu List lub Set 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 zwracany Flow<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 typu Channel<T> jest błędem. Zamiast tego funkcja Room zachęca do użycia Flow, a następnie użycia sąsiednich funkcji do skonwertowania Flow na Channel. 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 nazwie SongIdAndTitle z samymi 2 polami. Następnie Room zmieni zapytanie na SELECT id, title FROM Song tak, aby pobrać minimalny zestaw kolumn odpowiadających typowi zwróconemu. Zasadniczo eliminuje to ostrzeżenie CURSOR_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 zwracany Flow<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 typu Channel<T> jest błędem. Zamiast tego funkcja Room zachęca do użycia Flow, a następnie użycia sąsiednich funkcji do skonwertowania Flow na Channel. 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 nazwie SongIdAndTitle z samymi 2 polami. Następnie Room zmieni zapytanie na SELECT id, title FROM Song tak, aby pobrać minimalny zestaw kolumn odpowiadających typowi zwróconemu. Zasadniczo eliminuje to ostrzeżenie CURSOR_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 do RoomDatabase.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ści ByteBuffer. 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 tworzenia RoomDatabase 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, a createFromFile() – 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

    Uwaga: 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 typu List lub Set 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ę rozszerzenia RoomDatabase.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 instrukcje INSERT, DELETE lub UPDATE obsługują teraz zwroty Rx Completable, Single, Maybe i typ zwrotu ListenableFuture Guawy. Mogą one również być funkcjami zawieszania.
  • enableMultiInstanceInvalidation to nowy interfejs API w języku RoomDatabase.Builder, który umożliwia unieważnienie wielu instancji RoomDatabase przy użyciu tego samego pliku bazy danych.
  • fallbackToDestructiveMigrationOnDowngrade to nowy interfejs API w RoomDatabase.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 odbiornikiem CoroutineScope. Zapobiega to pomijaniu dodatkowego kodu coroutineScope { } 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 artefakcie room-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 na room-ktx. Nazwa jest taka sama jak w przypadku innych artefaktów Androidax.
  • Funkcje beginTransaction, setTransactionSuccessful i endTransaction w domenie RoomDatabase zostały wycofane i zastąpione przez funkcję runInTransaction oraz funkcję rozszerzenia room-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 instrukcjami INSERT, UPDATE lub DELETE 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ąc maven { 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 instrukcje INSERT, UPDATE lub DELETE mogą teraz zwracać typy asynchroniczne Single, Mayble, Completable i ListenableFuture. 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 jak Single, Mayble, Completable, LiveData lub ListenableFuture. 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 i OnConflictStrategy.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() i endTransaction() 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 w FtsOptions 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 zwrotu ListenableFuture. 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żenia IN. 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 Rx Completable, Single<T> i Maybe<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 wersji RoomDatabase.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/62334005
  • fallbackToDestructiveMigrationOnDowngrade: jest nowym interfejsem API w wersji RoomDatabase.Builder, który automatycznie odtwarza bazę danych w przypadku przejścia na niższą wersję. b/110416954
  • ignoredColumns: 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 i mDatabase w pokoju RoomDatabase 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 i Maybe 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 lub Maybe. 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ż przekazywania String 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 zamiast vararg 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 VACUUMuruchomienie bazy danych.
  • [@RawQuery][ref-RawQuery] akceptuje teraz dowolne pole Pojo dla właściwości observedEntities, o ile odwołuje się do co najmniej 1 encji za pomocą pól Embedded lub Relation. 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/71458963
  • fallBackToDestructiveMigrationsFrom: ten nowy interfejs API w wersji RoomDatabase.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ć stronicowania alpha-4 lub nowszego i przełączyć się z LivePagedListProvider na LivePagedListBuilder, 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