Skip to content

Commit

Permalink
Loading and initializing variant processor earlier
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsonlee committed Jul 16, 2022
1 parent 5f7de66 commit c81fdb2
Showing 1 changed file with 15 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.android.build.gradle.AppExtension
import com.android.build.gradle.BaseExtension
import com.android.build.gradle.LibraryExtension
import com.android.build.gradle.api.BaseVariant
import com.didiglobal.booster.task.spi.VariantProcessor
import org.gradle.api.GradleException
import org.gradle.api.Plugin
import org.gradle.api.Project
Expand All @@ -22,31 +23,31 @@ class BoosterPlugin : Plugin<Project> {
project.gradle.addListener(BoosterTransformTaskExecutionListener(project))
}

val processors = loadVariantProcessors(project)
if (project.state.executed) {
project.setup(processors)
} else {
project.afterEvaluate {
project.setup(processors)
}
}
}

private fun Project.setup(processors: List<VariantProcessor>) {
val android = project.getAndroid<BaseExtension>()
when (android) {
is AppExtension -> android.applicationVariants
is LibraryExtension -> android.libraryVariants
else -> emptyList<BaseVariant>()
}.takeIf<Collection<BaseVariant>>(Collection<BaseVariant>::isNotEmpty)?.let { variants ->
android.registerTransform(BoosterTransform.newInstance(project))
if (project.state.executed) {
project.setup(variants)
} else {
project.afterEvaluate {
project.setup(variants)
variants.forEach { variant ->
processors.forEach { processor ->
processor.process(variant)
}
}
}
}

private fun Project.setup(variants: Collection<BaseVariant>) {
val processors = loadVariantProcessors(this)
variants.forEach { variant ->
processors.forEach { processor ->
processor.process(variant)
}
}
}


}

0 comments on commit c81fdb2

Please sign in to comment.