0

过去,我们正在为移动设备开发一个 kotlin 多平台项目,该项目使用 sqldelight 进行数据库访问。

现在我们想添加一些本地桌面目标,例如 mingwX64 和 linuxX64,但目前 sqldelight 不适用于这些目标,因此我们想使用其他库来处理桌面上的数据库访问。但是如何将 sqldelight 配置设置为仅适用于 android 和 iOS 目标?

当前的 build.gradle.kts 如下所示:

plugins {
    kotlin("multiplatform")
    id("com.squareup.sqldelight")
    id("kotlinx-serialization")
    id("com.android.library")
}

android {
    ...
}
sqldelight {
    database("Database") {
        packageName = "foo.bar
        schemaOutputDirectory = file("src/foo
    }
}



kotlin {
    // Targets
    val android = android()
    val iosX64 = iosX64()
    val jvm = jvm()
    val linuxX64 = linuxX64()
    val windows = mingwX64()
    ...


    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation(kotlin("stdlib"))    
                //implementation("com.squareup.sqldelight:runtime:${rootProject.ext["sqldelightVersion"]}")
            }
        }
    ...
}


因为:plugins { id("com.squareup.sqldelight")sqldelight 运行时自动添加到 linux 和 windows 的依赖项中。

感谢你并致以真诚的问候

4

1 回答 1

1

Plangrid 维护自己的 sqldelight 分支以支持 mingwX64。在本机上,驱动程序称为 SQLiter ( https://github.com/touchlab/SQLiter )。那有 mingwX64 支持。我不知道如何在 Linux 上与 sqlite 链接,但如果你可以将 Linux 支持添加到 SQLiter,你可以发布一个支持所有这些平台的 Sqldelight 的分支。我编写和维护 SQLiter,所以我可以提供帮助。

或者,我认为你需要有不同的模块来避免插件正在做什么,或者维护你自己的 sqldelight 插件的分支。

于 2020-01-10T12:23:24.057 回答