geDemのアバターアイコン
geDem
 Blog
記事のカバー写真

KMPでRoomを使う際のセットアップ

geDemのアバターアイコン
geDem
ペン

もくじ

    公式ドキュメントで記載のあるライブラリをlibs.versions.tomlに記載し、build.gradle.ktsで読み込みます。

    roomを使う場合はkspも必要なので追加します。


    注意点

    • roomは2.7.0以上のバージョンを使用すること
    • KotlinとKspのバージョンを合わせること
    • Kotlinの1.9.xを使用している場合は、gradle.propertiesに「kotlin.native.disableCompilerDaemon = true」を記載すること
    libs.versions.toml[versions]
    agp = "8.5.2"
    kotlin = "2.1.0"
    ...
    room = "2.7.0-alpha11"
    ksp = "2.1.0-1.0.29"
    sqlite = "2.5"
    
    [libraries]
    ...
    room-gradle-plugin = { module = "androidx.room:room-gradle-plugin", version.ref = "room" }
    room-runtime = { module = "androidx.room:room-runtime", version.ref = "room"}
    room-compiler = { module = "androidx.room:room-compiler", version.ref = "room"}
    sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "sqlite" }
    
    [plugins]
    ...
    ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
    room = { id = "androidx.room", version.ref = "room"}
    

    sharedのgradle↓

    build.gradleimport org.jetbrains.kotlin.gradle.dsl.JvmTarget
    
    plugins {
        ...
        alias(libs.plugins.room)
        alias(libs.plugins.ksp)
    }
    
    kotlin {
        ...
        sourceSets {
            commonMain.dependencies {
                implementation(libs.room.runtime)
                implementation(libs.sqlite.bundled)
            }
            commonTest.dependencies {
                ...
            }
        }
    }
    
    dependencies {
        add("kspCommonMainMetadata", libs.room.compiler)
        add("kspAndroid", libs.room.compiler)
        add("kspIosSimulatorArm64", libs.room.compiler)
        add("kspIosX64", libs.room.compiler)
        add("kspIosArm64", libs.room.compiler)
    }
    
    room {
        schemaDirectory("$projectDir/schemas")
    }
    

    androidAppのgradle↓

    build.gradle.kts...
    
    dependencies {
        implementation(projects.shared)
        ...
    }
    

    🙂‍↕️最後まで読んでいただきありがとうございます🙂‍↕️