multiplatform-swiftpackage
multiplatform-swiftpackage copied to clipboard
Middle nativeMain module with specific iosMain and macOSMain fails.
Not sure if this is expected, do have a project with a middle nativeMain source set for specific iosMain & macOSMain source set
- commonMain
- nativeMain
- iosMain
- macOSMain
build.gradle.kts
macosX64("native")
macosX64("macOS") {
binaries {
framework {
baseName = "shared"
}
}
}
ios() {
binaries {
framework {
baseName = "shared"
}
}
}
...
val nativeMain by getting {
dependencies {
implementation(libs.sqlDelight.native)
implementation(libs.ktor.client.core)
implementation(libs.coroutines.core)
implementation(libs.multiplatformSettings.common)
}
}
val iosMain by getting {
dependsOn(nativeMain)
dependencies {
implementation(libs.ktor.client.ios)
val coroutineCore = libs.coroutines.core.get()
implementation("${coroutineCore.module.group}:${coroutineCore.module.name}:${coroutineCore.versionConstraint.displayName}") {
version {
strictly(libs.versions.coroutines.native.get())
}
}
}
}
val macOSMain by getting {
dependsOn(nativeMain)
dependencies {
implementation("io.ktor:ktor-client-curl:2.0.0-beta-1")
}
}
...
multiplatformSwiftPackage {
packageName("sharedValkyrie")
swiftToolsVersion("5.3")
targetPlatforms {
iOS { v("13") }
macOS { v("11") }
}
}
Inside commonMain I have multiple expect class ... that are defined only in iosMain and macOSMain and not in nativeMain, such as UserAgent strings, platform name, etc. After gradle sync, those expect classes are solved properly without any errors but when running createSwiftPackage gradle task, I receive that there are no expect declarations in nativeMain module:
Expected class 'Platform' has no actual declaration in module <mySharedModule> for Native
Shouldn't just execute compileKotlinIos and compileKotlinMacOS and skip compileKotlinNative?
Is there a workaround to do this?