Как настроить sqldelight в многоплатформенном проекте kotlin с Android, iOS и неподдерживаемыми целями, такими как mingwX64?

В прошлом мы работали над мультиплатформенным проектом 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.

Спасибо и наилучшими пожеланиями


person 501 - not implemented    schedule 10.01.2020    source источник


Ответы (1)


Plangrid поддерживает собственный форк sqldelight для поддержки mingwX64. На собственном языке драйвер называется SQLiter (https://github.com/touchlab/SQLiter). Имеет поддержку mingwX64. Я не знаю, как связать с sqlite в Linux, но если вы можете добавить поддержку Linux в SQLiter, вы можете опубликовать форк Sqldelight, который поддерживает все эти платформы. Я написал и поддерживаю SQLiter, поэтому могу помочь.

В качестве альтернативы, я думаю, вам понадобятся разные модули, чтобы избежать того, что делает плагин, или поддерживать свою собственную вилку плагина sqldelight.

person Kevin Galligan    schedule 10.01.2020