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 commonJvmTestKolby 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.