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).

(cherry picked from commit ab5963a04c)
This commit is contained in:
Goooler
2023-12-17 18:56:04 +08:00
parent c383fad782
commit 449707798c

View File

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