过去,我们正在为移动设备开发一个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的依赖项中。

感谢你并致以真诚的问候

最佳答案

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

另外,我认为您需要使用不同的模块来避免插件在做什么,或者维护自己的sqldelight插件。

关于gradle - 如何在带有Android,iOS和不支持的目标(例如mingwX64)的kotlin跨平台项目中设置sqldelight?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59677825/

10-09 01:12