Benjamin Helbig
11/29/2021, 1:40 PMExecution failed for task `:shared:checkDebugAndroidTestDuplicateClasses`
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class com.sun.jna.AltCallingConvention found in modules jna-5.8.0 (net.java.dev.jna:jna:5.8.0) and jna-5.8.0-runtime (net.java.dev.jna:jna:5.8.0)
     Duplicate class com.sun.jna.Callback found in modules jna-5.8.0 (net.java.dev.jna:jna:5.8.0) and jna-5.8.0-runtime (net.java.dev.jna:jna:5.8.0)build.gradle.kts (:shared)kotlin {
    android()
    sourceSets {
        val commonMain by getting {
            dependencies {
                ...
                api("io.github.matrixkt:olm:$matrix_kt_version") {
                   // android target will pick up "aar" version instead (see below)
                        exclude(group = "net.java.dev.jna", module = "jna")
                }
            }
        }
        val androidMain by getting {
            dependencies {
                    ...
                    
                    implementation("net.java.dev.jna:jna:5.8.0@aar")
            }
        }
...kotlin {
    android()
    sourceSets {
        val commonMain by getting {
            dependencies {
...
                // have this on the compile classpath only and let the final targets take care of the runtime classpath
                compileOnly("io.github.matrixkt:olm:$matrix_kt_version")
            }
        }
        val androidMain by getting {
            dependencies {
...
                if (isConnectedAndroidTest() == false) {
                    api("io.github.matrixkt:olm:$matrix_kt_version") {
                        exclude(group = "net.java.dev.jna", module = "jna")
                    }
                    implementation("net.java.dev.jna:jna:5.8.0@aar")
                }
            }
        }
        val androidTest by getting {
            dependencies {
...
                if (isConnectedAndroidTest()) {
                    api("io.github.matrixkt:olm:$matrix_kt_version") {
                        exclude(group = "net.java.dev.jna", module = "jna")
                    }
                    implementation("net.java.dev.jna:jna:5.8.0@aar")
                }
            }
...
fun isConnectedAndroidTest(): Boolean {
    val tasks = gradle.startParameter.taskNames
    val instrumentedTests = listOf("connectedAndroidTest", "connectedCheck", "connectedDebugAndroidTest")
    return !tasks.intersect(instrumentedTests).isEmpty()
}