Optimize artifacts copy task (#3842)

We should avoid using internal APIs in AGP.

Refs 1cd59c8951/addCustomAsset/build-logic/plugins/src/main/kotlin/CustomPlugin.kt (L63-L70).
This commit is contained in:
Goooler
2023-12-17 18:56:04 +08:00
committed by GitHub
parent 6ef0290fee
commit ab5963a04c

View File

@@ -1,3 +1,4 @@
import app.cash.licensee.LicenseeTask
import com.android.build.gradle.api.AndroidBasePlugin import com.android.build.gradle.api.AndroidBasePlugin
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
@@ -138,17 +139,22 @@ android {
buildConfigField "int", "QUICKSTEP_MAX_SDK", quickstepMaxSdk buildConfigField "int", "QUICKSTEP_MAX_SDK", quickstepMaxSdk
} }
applicationVariants.configureEach { variant -> androidComponents {
def capitalizedName = variant.name.capitalize() onVariants(selector().all()) { variant ->
def copyArtifactList = tasks.register("copy${capitalizedName}ArtifactList", Copy) { def capName = variant.name.capitalize()
dependsOn tasks.named("licenseeAndroid${capitalizedName}") def licenseeTask = tasks.named("licenseeAndroid$capName", LicenseeTask)
from reporting.file("licensee/android${capitalizedName}/artifacts.json") def copyArtifactsTask = tasks.register("copy${capName}Artifacts", Copy) {
into layout.buildDirectory.dir("generated/dependencyAssets/") dependsOn(licenseeTask)
} from(licenseeTask.map { it.outputDir.file("artifacts.json") })
tasks.named("merge${variant.name.capitalize()}Assets").configure { into(layout.buildDirectory.dir("generated/dependencyAssets"))
dependsOn copyArtifactList }
variant.sources.assets?.addGeneratedSourceDirectory(licenseeTask) {
objects.directoryProperty().fileProvider(copyArtifactsTask.map { it.destinationDir })
}
} }
}
applicationVariants.configureEach { variant ->
variant.outputs.configureEach { variant.outputs.configureEach {
outputFileName = "Lawnchair ${variant.versionName}.apk" outputFileName = "Lawnchair ${variant.versionName}.apk"
} }