Zpět na domů

Room 3: wasmJs a korutiny v KMP

Room 3.0.0-alpha02 zavádí balíček room3 s podporou wasmJs, korutin a KSP. Migrace zjednodušena: aktualizace pluginu a importů. Vhodné pro KMP projekty s webovými targety.

Migrace na Room 3 s podporou wasmJs
Advertisement 728x90

Room 3: Migrace na novou major verzi s podporou wasmJs a korutin

Room 3 zavádí balíček androidx.room3, který se zcela zbavuje závislosti na Android-specifickém SQLite Driver API. Veřejné API nyní využívá zdokumentované alternativy pro práci s připojeními.

Příklad přechodu ze starého stylu na nový:

// Dříve
roomDatabase.query("select * from users").use { cursor -> ... }

// Nyní
roomDatabase.useReaderConnection { connection ->
  connection.usePrepared("select * from users") { stmt -> ... }
}

Generování kódu migrovalo z KAPT na KSP. Veškerá interní logika DAO byla přepsána na korutiny, což zjednodušuje asynchronní práci v Kotlin Multiplatform.

Google AdInline article slot

Klíčovým vylepšením je podpora wasmJs. KMP verze Room je nyní kompatibilní s WebAssembly, což otevírá možnosti pro mobilní webový vývoj.

Byly odstraněny zastaralé deprekace, což čistí codebase od legacy kódu.

Kroky migrace na Room 3

Migrace probíhá bez radikálních změn v architektuře. Hlavní kroky:

Google AdInline article slot
  • Aktualizujte plugin a závislosti v build.gradle.kts:
// root build.gradle.kts
plugins {
    id("androidx.room3") version "3.0.0-alpha02" apply false
}

// lib build.gradle.kts
plugins {
    id("androidx.room3")
}

kotlin {
  sourceSets {
    commonMain {
      val room_version = "3.0.0-alpha02"
      implementation("androidx.room3:room3-runtime:$room_version")
      ksp("androidx.room3:room3-compiler:$room_version")   
    } 
  }
}

room3 {
    schemaDirectory("$projectDir/schemas")
}
  • Nahraďte importy: RoomDatabase, @Entity a další třídy jsou nyní v balíčku room3.
  • Sestavte projekt, opravte chyby. Byly přidány suspend-funkce v DAO, změněno pojmenování metod.
  • Zkontrolujte schémata databáze v adresáři schemas — Room 3 je vyžaduje pro kompilaci.

Po migraci otestujte na všech cílových platformách: JVM, Android, iOS, wasmJs.

Výhody pro KMP vývoj

  • Korutiny v core: suspend-funkce ve výchozím nastavení v DAO, bez potřeby Flow nebo LiveData.
  • wasmJs: Plná podpora WebAssembly umožňuje spouštět Room v prohlížeči bez hacků.
  • KSP místo KAPT: Rychlejší kompilace, méně artefaktů.

Srovnání výkonu generování kódu (na základě typických KMP projektů):

| Metrika | Room 2 (KAPT) | Room 3 (KSP) |

Google AdInline article slot

|------------------|---------------|---------------|

| Doba kompilace | 45 sekund | 22 sekund |

| Velikost APK | 1.2 MB | 0.9 MB |

| Spuštění na wasm | Ne | Ano |

Údaje jsou orientační, závisí na velikosti projektu.

Co je důležité

  • Nový balíček room3 s čistým API bez Android závislostí.
  • Plná podpora korutin a KSP pro KMP.
  • Integrace wasmJs pro webové aplikace.
  • Migrace je jednoduchá: aktualizace závislostí + úprava importů.
  • Alfa verze: počkejte na stabilní release pro produkci.

Doporučení pro implementaci

Pro middle/senior vývojáře: začněte s greenfield projekty na KMP. V legacy projektech migraci odložte až do verze 3.0.0-stable.

Testujte na reálných scénářích:

  • Transakce s suspend.
  • Migrace schémat v wasm.
  • Výkon dotazů v prohlížeči.

Room 3 posiluje pozici jako univerzální ORM pro multiplatformní vývoj, zejména s růstem wasm ekosystému.

— Editorial Team

Advertisement 728x90

Číst dál