@@ -20,7 +20,9 @@ import com.android.build.api.variant.Component
2020import com.google.devtools.ksp.KspExperimental
2121import com.google.devtools.ksp.gradle.model.builder.KspModelBuilder
2222import com.google.devtools.ksp.gradle.utils.canUseGeneratedKotlinApi
23+ import com.google.devtools.ksp.gradle.utils.canUseInternalKspApis
2324import com.google.devtools.ksp.gradle.utils.enableProjectIsolationCompatibleCodepath
25+ import com.google.devtools.ksp.gradle.utils.isAgpBuiltInKotlinUsed
2426import com.google.devtools.ksp.gradle.utils.useLegacyVariantApi
2527import org.gradle.api.Project
2628import org.gradle.api.Task
@@ -207,15 +209,11 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
207209 // They will be observed by downstreams and violate current build scheme.
208210 kotlinCompileProvider.configure { it.source(* generatedSources) }
209211 } else {
210- if (project.canUseGeneratedKotlinApi() && project.enableProjectIsolationCompatibleCodepath()) {
211- kotlinCompilation.defaultSourceSet.generatedKotlin.srcDir(
212- kspTaskProvider.map { task -> task.kspConfig.kotlinOutputDir }
213- )
214- kotlinCompilation.defaultSourceSet.generatedKotlin.srcDir(
215- kspTaskProvider.map { task -> task.kspConfig.javaOutputDir }
216- )
217- } else {
218- kotlinCompilation.defaultSourceSet.kotlin.srcDirs(* generatedSources)
212+ val skipAddingSources = kotlinCompilation is KotlinJvmAndroidCompilation &&
213+ project.isAgpBuiltInKotlinUsed() && project.canUseInternalKspApis()
214+
215+ if (! skipAddingSources) {
216+ registerOutputWithKotlinSrcdirs(project, kotlinCompilation, kspTaskProvider, * generatedSources)
219217 }
220218 }
221219
@@ -256,6 +254,25 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool
256254 return project.provider { emptyList() }
257255 }
258256
257+ private fun registerOutputWithKotlinSrcdirs (
258+ project : Project ,
259+ kotlinCompilation : KotlinCompilation <* >,
260+ kspTaskProvider : TaskProvider <KspAATask >,
261+ vararg generatedSources : FileCollection
262+ ) {
263+ if (project.canUseGeneratedKotlinApi() && project.enableProjectIsolationCompatibleCodepath()) {
264+ kotlinCompilation.defaultSourceSet.generatedKotlin.srcDir(
265+ kspTaskProvider.map { task -> task.kspConfig.kotlinOutputDir }
266+ )
267+ kotlinCompilation.defaultSourceSet.generatedKotlin.srcDir(
268+ kspTaskProvider.map { task -> task.kspConfig.javaOutputDir }
269+ )
270+ } else {
271+ @Suppress(" DEPRECATION" )
272+ kotlinCompilation.defaultSourceSet.kotlin.srcDirs(* generatedSources)
273+ }
274+ }
275+
259276 override fun getCompilerPluginId () = KSP_PLUGIN_ID
260277 override fun getPluginArtifact (): SubpluginArtifact =
261278 SubpluginArtifact (
0 commit comments