You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加SQLDelight依赖后Compose多平台模板出现构建错误

问题解决方案

针对你遇到的三个错误,逐一排查修复:

1. Unresolved reference: androidTarget

这个错误是因为你在配置SQLDelight驱动时错误引用了不存在的androidTarget变量。在Compose Multiplatform的shared模块中,Android目标的配置需通过Kotlin多平台的源集区分,正确做法是在sqldelight块中针对androidMain源集配置SQLite驱动:

sqldelight {
    databases {
        create("Database") {
            packageName.set("com.project.shared.db")
            // 针对各平台源集配置对应驱动
            sourceSets {
                getByName("androidMain") {
                    dependency("app.cash.sqldelight:android-driver:2.0.0")
                }
                getByName("iosMain") {
                    dependency("app.cash.sqldelight:native-driver:2.0.0")
                }
                getByName("desktopMain") {
                    dependency("app.cash.sqldelight:sqlite-driver:2.0.0")
                }
            }
        }
    }
}

不要直接使用androidTarget,而是通过源集名称指定依赖。

2. SQLDelight Gradle plugin was applied but there are no databases set up

这个问题通常是数据库配置与.sq文件路径不匹配导致的:

  • 若遵循默认规范,需将Database.sq放在src/commonMain/sqldelight/com/project/shared/db/目录下(这是SQLDelight的schema专属目录,而非Kotlin代码目录)。
  • 若想保留现有文件位置,可在配置中手动指定schema目录:
sqldelight {
    databases {
        create("Database") {
            packageName.set("com.project.shared.db")
            schemaDirectory.set(file("src/commonMain/com/project/shared/db"))
        }
    }
}

配置后SQLDelight就能识别到你的.sq文件与数据库定义。

3. commonTest源集未关联编译

SQLDelight插件默认会修改测试源集配置,需手动为commonTest补充依赖:
在kotlin块的sourceSets中添加如下配置:

kotlin {
    // ... 其他平台配置
    sourceSets {
        val commonTest by getting {
            dependencies {
                implementation("app.cash.sqldelight:runtime:2.0.0")
                implementation("app.cash.sqldelight:sqlite-driver:2.0.0")
                // 保留原有测试依赖如kotest等
            }
        }
    }
}

同时确保commonTest的目录结构为src/commonTest/kotlin,未被错误修改。

额外检查项

  • 确认项目根目录settings.gradle.kts中已包含插件仓库:
pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
  • 确认shared模块build.gradle.kts顶部已正确应用插件:
plugins {
    kotlin("multiplatform")
    id("com.android.library")
    id("org.jetbrains.compose")
    id("app.cash.sqldelight") version "2.0.0"
}

内容的提问来源于stack exchange,提问作者MrPlow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:35:26