hi, I am trying to make a multiplatform project with jvm and androidTarget - in the Android part I u...
a

Anders Carlsen

about 2 years ago
hi, I am trying to make a multiplatform project with jvm and androidTarget - in the Android part I use Hilt to annotate some shared viewmodels, this works fine when running on android, but when trying to build jvm target it fails:
Execution failed for task ':moduleName:kaptKotlinJvm'.
> Cannot query the value of this provider because it has no value available.
  The value of this provider is derived from:
    - task ':moduleName:kaptGenerateStubsKotlinJvm' property 'kotlinCompileDestinationDirectory'
If I remove Kapt plugin it works on jvm, but the Hilt kapt tasks won’t be run and I get runtime error when using viewModel on Android. this is the build.gradle.kts file:
plugins {
    kotlin("multiplatform")
    id("com.android.library")
    kotlin("kapt")
}

kotlin {
    jvm()
    androidTarget()

    sourceSets {

        val commonMain by getting {
            dependencies {
                implementation(Deps.kotlinCoroutines)
            }
        }

        val commonTest by getting {
            dependencies {
                implementation(kotlin("test"))
            }
        }

        val jvmMain by getting {
            dependencies {
                implementation(Deps.voyagerNavigator)
                implementation(Deps.voyagerKoin)
            }
        }

        val androidMain by getting {
            kotlin.srcDir("src/commonMain/kotlin")
            dependencies {
                implementation(Deps.kotlinCoroutinesAndroid)
                implementation(Deps.androidxLifecycleViewModel)
                implementation(Deps.googleHilt)
                configurations["kapt"]?.dependencies?.add(project.dependencies.create(Deps.googleHiltCompiler))
            }
        }
    }
}

android {
    namespace = "package"
    compileSdk = ConfigData.androidCompileSdkVersion

    defaultConfig {
        minSdk = ConfigData.androidMinSdkVersion
    }
    sourceSets["main"].apply {
        manifest.srcFile("src/androidMain/AndroidManifest.xml")
        res.srcDirs("src/androidMain/resources")
        resources.srcDirs("src/commonMain/resources")
    }
    compileOptions {
        sourceCompatibility = Versions.javaVersion
        targetCompatibility = Versions.javaVersion
    }
    kotlin {
        jvmToolchain(Versions.javaJvmTarget.toInt())
    }
}