[Gradle] Pass Android-related sources to KotlinSourceSet instead task
Setting sources through compile task is not compatible with Multiplatform K2 because for such sources no K2 Fragment relations will be set and compilation will fail. ^KT-63753 Verification Pending
This commit is contained in:
committed by
Space Team
parent
b13b27a715
commit
fabf75f4e2
+6
-4
@@ -231,10 +231,12 @@ internal class AndroidProjectHandler(
|
||||
val javaTask = variantData.javaCompileProvider
|
||||
@Suppress("UNCHECKED_CAST") val kotlinTask = compilation.compileTaskProvider as TaskProvider<KotlinCompile>
|
||||
compilation.androidVariant.forEachJavaSourceDir { sources ->
|
||||
kotlinTask.configure {
|
||||
it.setSource(sources.dir)
|
||||
it.dependsOn(sources)
|
||||
}
|
||||
// It is important to pass exactly `sources.dir` as provider with explicit task dependency
|
||||
// Because of the following bugs:
|
||||
// * https://github.com/gradle/gradle/issues/27881 ConfigurableFileTree.from() doesn't preserve Task Dependencies
|
||||
// * https://github.com/gradle/gradle/issues/27882 SourceDirectorySet doesn't accept ConfigurableFileTree
|
||||
val sourceDirWithTaskDependencies = project.filesProvider(sources) { sources.dir }
|
||||
compilation.defaultSourceSet.kotlin.srcDir(sourceDirWithTaskDependencies)
|
||||
}
|
||||
wireKotlinTasks(project, compilation, androidPlugin, androidExt, variantData, javaTask, kotlinTask)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user