Kolby Kunz
09/08/2023, 6:23 PMactual
implementation corresponding to some expect
stubs in common main. I am trying to use my jvmMain actual
implementations as my androidMain actual
implementations. I have seen the example of creating a new srcDir in each of the source sets but that does not seem to work as idea wants me to create androidMain actual
functions. Is it possible to share these implementations between the two targets?mohamed rejeb
09/08/2023, 6:57 PMKolby Kunz
09/08/2023, 7:25 PMPatrick Cavanagh
09/08/2023, 10:27 PMKirill Zhukov
09/08/2023, 10:31 PMjvmMain
and androidMain
?Kirill Zhukov
09/08/2023, 10:32 PMcommonJvm
used by jvm and android targets.Kirill Zhukov
09/08/2023, 10:34 PMtargetHierarchy.default { // or .custom depending on your setup
common {
group("commonJvm") {
group("jvm") withJvm()
group("android") withAndroidTarget()
}
}
}
Kirill Zhukov
09/08/2023, 10:35 PMval commonJvm by creating {
dependsOn(commonMain)
}
jvmMain {
dependsOn(commonJvm)
}
androidMain {
dependsOn(commonJvm)
}
// similar with commonJvmTest
Kolby Kunz
09/08/2023, 10:38 PMKolby Kunz
09/08/2023, 11:26 PMactual
functions say that there is no expect
declaration for the function. All other sources work though.Kolby Kunz
09/08/2023, 11:26 PMKirill Zhukov
09/08/2023, 11:37 PMKolby Kunz
09/09/2023, 12:51 AMsourceSets {
all {
languageSettings.optIn("kotlinx.cinterop.ExperimentalForeignApi")
}
val commonMain by getting {
kotlin.srcDir(askarBindings.resolve("commonMain").resolve("kotlin"))
dependencies {
implementation("com.squareup.okio:okio:3.2.0")
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.0-RC")
}
}
val commonTest by getting {
this.dependsOn(commonMain)
dependencies{
implementation(kotlin("test"))
}
}
val commonJvmMain by creating {
kotlin.srcDir(askarBindings.resolve("commonJvmMain").resolve("kotlin"))
dependencies{
implementation("net.java.dev.jna:jna:5.13.0")
}
dependsOn(commonMain)
}
val androidMain by getting {
kotlin.srcDir(binaries)
dependencies{
implementation("net.java.dev.jna:jna:5.13.0@aar")
implementation("org.jetbrains.kotlinx:atomicfu:0.22.0")
}
dependsOn(commonJvmMain)
}
val jvmMain by getting {
kotlin.srcDir(binaries)
dependencies{
implementation("net.java.dev.jna:jna:5.13.0")
}
dependsOn(commonJvmMain)
}
val jvmTest by getting {
dependsOn(jvmMain)
}
val nativeMain by getting {
kotlin.srcDir(askarBindings.resolve("nativeMain").resolve("kotlin"))
}
val nativeTest by getting{
dependsOn(nativeMain)
}
}
Jeff Lockhart
09/09/2023, 1:55 PMJeff Lockhart
09/09/2023, 1:59 PMJeff Lockhart
09/09/2023, 2:04 PMtargetHierarchy
API @Kirill Zhukov mentioned above. It makes the source set hierarchy code much more concise and readable. It's also less prone to errors with complicated hierarchies.