Erstellt am 11. Okt. 2020 · 4Kommentare · Quelle: cashapp/sqldelight
Build-Umgebung
Android Studio: 4.1 RC
SQLDelight-Version: 1.4.4
Betriebssystem: iOS 13,14
Gradle-Version:
Kotlin-Version: 1.4.10, KMM 0.1.3
AGP-Version (falls zutreffend):
Beschreibe den Fehler
Verwenden der neuesten Plugins 1.4.3 für SQL Delight und Android 4.1 RC. Der Kompilierungsfehler wird immer noch ohne com.squareup.sqldelight.drivers.native.NativeSqliteDriver angezeigt
bug
sreexamus
👍15🚀1❤1
Hilfreichster Kommentar
In Gradle Version 4.1.0 verwende ich denselben Gradle-Build gemäß dem Tutorial unter https://kotlinlang.org/docs/mobile/discover-kmm-project.html#ios -framework. Nach dem Hinzufügen der Zeilen haben Sie vorgeschlagen, den nativen Treiber zu finden und den Code zu kompilieren. Vielen Dank!
Der Vollständigkeit halber hier die geteilten gradle.build.kts, die ich jetzt habe:
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetplugins { kotlin("multiplatform") id("com.android.library") id("kotlin-android-extensions") id("com.squareup.sqldelight")}group = "es.elhaso.lazers"version = "1.0-SNAPSHOT"repositories { gradlePluginPortal() google() jcenter() mavenCentral()}kotlin { android() ios { binaries { framework { baseName = "shared" } } } // Block from https://github.com/cashapp/sqldelight/issues/2044#issuecomment-721299517. val onPhone = System.getenv("SDK_NAME")?.startsWith("iphoneos") ?: false if (onPhone) { iosArm64("ios") } else { iosX64("ios") } sourceSets { val commonMain by getting val commonTest by getting { dependencies { implementation(kotlin("test-common")) implementation(kotlin("test-annotations-common")) implementation("com.squareup.sqldelight:runtime:${Versions.sqlDelight}") } } val androidMain by getting { dependencies { implementation("com.google.android.material:material:1.2.0") implementation("com.squareup.okhttp3:okhttp:${Versions.okhttp}") implementation("com.squareup.sqldelight:android-driver:${Versions.sqlDelight}") } } val androidTest by getting { dependencies { implementation(kotlin("test-junit")) implementation("junit:junit:4.12") } } val iosMain by getting { dependencies { implementation("com.squareup.sqldelight:native-driver:${Versions.sqlDelight}") } } val iosTest by getting }}sqldelight { database("AppDatabase") { packageName = "es.elhaso.lazers.db" }}android { compileSdkVersion(29) sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") defaultConfig { minSdkVersion(24) targetSdkVersion(29) versionCode = 1 versionName = "1.0" } buildTypes { getByName("release") { isMinifyEnabled = false } }}val packForXcode by tasks.creating(Sync::class) { group = "build" val mode = System.getenv("CONFIGURATION") ?: "DEBUG" val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator" val targetName = "ios" + if (sdkName.startsWith("iphoneos")) "Arm64" else "X64" val framework = kotlin.targets.getByName<KotlinNativeTarget>(targetName).binaries.getFramework(mode) inputs.property("mode", mode) dependsOn(framework.linkTask) val targetDir = File(buildDir, "xcode-frameworks") from({ framework.outputDirectory }) into(targetDir)}tasks.getByName("build").dependsOn(packForXcode)
chokokatana am 3. Nov. 2020
👍14
Alle 4 Kommentare
Gleiches gilt für sqlDelight 1.4.4, Android Studio 4.1. Erreicht https://kotlinlang.org/docs/mobile/configure-sqldelight-for-data-storage.html#table -operations, kann aber nicht weiterentwickelt werden, da der NativeSqliteDriver aus irgendeinem Grund unter iOS nicht gefunden wird (aber für funktioniert) Android):
chokokatana am 3. Nov. 2020
Bitte posten Sie Ihre ios-Quellensatzkonfiguration sowie die Gradle-Version. Wenn Sie die kombinierte Zielkonfiguration ios()
, tritt dieses Problem auf. Wir verwenden immer noch:
val onPhone = System.getenv("SDK_NAME")?.startsWith("iphoneos") ?: false if (onPhone) { iosArm64("ios") } else { iosX64("ios") }
für unsere App dev. Ich werde versuchen, bald zur hierarchischen Einstellung zu wechseln, hatte aber Probleme.
Beispiel hier: https://github.com/touchlab/KaMPKit/blob/master/shared/build.gradle.kts#L28
kpgalligan am 3. Nov. 2020
In Gradle Version 4.1.0 verwende ich denselben Gradle-Build gemäß dem Tutorial unter https://kotlinlang.org/docs/mobile/discover-kmm-project.html#ios -framework. Nach dem Hinzufügen der Zeilen haben Sie vorgeschlagen, den nativen Treiber zu finden und den Code zu kompilieren. Vielen Dank!
Der Vollständigkeit halber hier die geteilten gradle.build.kts, die ich jetzt habe:
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetplugins { kotlin("multiplatform") id("com.android.library") id("kotlin-android-extensions") id("com.squareup.sqldelight")}group = "es.elhaso.lazers"version = "1.0-SNAPSHOT"repositories { gradlePluginPortal() google() jcenter() mavenCentral()}kotlin { android() ios { binaries { framework { baseName = "shared" } } } // Block from https://github.com/cashapp/sqldelight/issues/2044#issuecomment-721299517. val onPhone = System.getenv("SDK_NAME")?.startsWith("iphoneos") ?: false if (onPhone) { iosArm64("ios") } else { iosX64("ios") } sourceSets { val commonMain by getting val commonTest by getting { dependencies { implementation(kotlin("test-common")) implementation(kotlin("test-annotations-common")) implementation("com.squareup.sqldelight:runtime:${Versions.sqlDelight}") } } val androidMain by getting { dependencies { implementation("com.google.android.material:material:1.2.0") implementation("com.squareup.okhttp3:okhttp:${Versions.okhttp}") implementation("com.squareup.sqldelight:android-driver:${Versions.sqlDelight}") } } val androidTest by getting { dependencies { implementation(kotlin("test-junit")) implementation("junit:junit:4.12") } } val iosMain by getting { dependencies { implementation("com.squareup.sqldelight:native-driver:${Versions.sqlDelight}") } } val iosTest by getting }}sqldelight { database("AppDatabase") { packageName = "es.elhaso.lazers.db" }}android { compileSdkVersion(29) sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") defaultConfig { minSdkVersion(24) targetSdkVersion(29) versionCode = 1 versionName = "1.0" } buildTypes { getByName("release") { isMinifyEnabled = false } }}val packForXcode by tasks.creating(Sync::class) { group = "build" val mode = System.getenv("CONFIGURATION") ?: "DEBUG" val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator" val targetName = "ios" + if (sdkName.startsWith("iphoneos")) "Arm64" else "X64" val framework = kotlin.targets.getByName<KotlinNativeTarget>(targetName).binaries.getFramework(mode) inputs.property("mode", mode) dependsOn(framework.linkTask) val targetDir = File(buildDir, "xcode-frameworks") from({ framework.outputDirectory }) into(targetDir)}tasks.getByName("build").dependsOn(packForXcode)
chokokatana am 3. Nov. 2020
👍14
Die Konfiguration im endgültigen kmm-Netzwerk- und Datenspeicher funktioniert für mich @chokokatana @sreexamus
... val iOSTarget: (String, KotlinNativeTarget.() -> Unit) -> KotlinNativeTarget = if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true) ::iosArm64 else ::iosX64 iOSTarget("ios") { binaries { framework { baseName = "shared" } } }....val packForXcode by tasks.creating(Sync::class) { group = "build" val mode = System.getenv("CONFIGURATION") ?: "DEBUG" val framework = kotlin.targets.getByName<KotlinNativeTarget>("ios").binaries.getFramework(mode) inputs.property("mode", mode) dependsOn(framework.linkTask) val targetDir = File(buildDir, "xcode-frameworks") from({ framework.outputDirectory }) into(targetDir)}tasks.getByName("build").dependsOn(packForXcode)
ernestkamara am 25. Nov. 2020
👍2
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen
Verwandte Themen
Zuordnung zu Listen von Objekten hinzufügen
dimsuz · 5Kommentare
Generieren Sie die Creator-Wrapper-Methode, um eine einfache Konstruktorreferenz im Kotlin-Begleitobjekt zu ermöglichen
Takhion · 3Kommentare
Kotlin Gradle DSL unterstützen
LouisCAD · 5Kommentare
Filtern in ausgewählten Abfragen
aegis123 · 4Kommentare
Abfrage-Listener kann unter nativem/iOS nicht hinzugefügt werden
kuhnroyal · 4Kommentare