@@ -3,10 +3,10 @@ package com.didiglobal.booster.task.compression.processed.res
33import com.android.SdkConstants
44import com.android.SdkConstants.DOT_PNG
55import com.android.build.gradle.api.BaseVariant
6+ import com.android.build.gradle.internal.tasks.factory.dependsOn
67import com.didiglobal.booster.compression.CompressionReport
78import com.didiglobal.booster.compression.CompressionResult
89import com.didiglobal.booster.compression.CompressionResults
9- import com.didiglobal.booster.gradle.processResTask
1010import com.didiglobal.booster.gradle.processResTaskProvider
1111import com.didiglobal.booster.gradle.processedRes
1212import com.didiglobal.booster.gradle.project
@@ -17,6 +17,9 @@ import com.didiglobal.booster.task.spi.VariantProcessor
1717import com.didiglobal.booster.transform.util.transform
1818import com.google.auto.service.AutoService
1919import org.apache.commons.compress.archivers.zip.ZipArchiveEntry
20+ import org.gradle.api.DefaultTask
21+ import org.gradle.api.tasks.Internal
22+ import org.gradle.api.tasks.TaskAction
2023import java.io.File
2124import java.text.DecimalFormat
2225import java.util.zip.ZipEntry
@@ -32,17 +35,33 @@ import java.util.zip.ZipFile
3235class ProcessedResourcesCompressionVariantProcessor : VariantProcessor {
3336
3437 override fun process (variant : BaseVariant ) {
35- val results = CompressionResults ()
36- variant.processResTaskProvider?.configure {
37- it.doLast {
38- variant.compressProcessedRes(results)
39- variant.generateReport(results)
38+ val compress = variant.project.tasks.register(" compress${variant.name.capitalize()} ProcessedRes" , CompressProcessedRes ::class .java) {
39+ it.variant = variant
40+ }
41+ variant.processResTaskProvider?.let { processRes ->
42+ compress.dependsOn(processRes)
43+ processRes.configure {
44+ it.finalizedBy(compress)
4045 }
4146 }
4247 }
4348
4449}
4550
51+ internal abstract class CompressProcessedRes : DefaultTask () {
52+
53+ @get:Internal
54+ lateinit var variant: BaseVariant
55+
56+ @TaskAction
57+ fun compress () {
58+ val results = CompressionResults ()
59+ variant.compressProcessedRes(results)
60+ variant.generateReport(results)
61+ }
62+
63+ }
64+
4665private fun BaseVariant.compressProcessedRes (results : CompressionResults ) {
4766 val files = processedRes.search {
4867 it.name.startsWith(SdkConstants .FN_RES_BASE ) && it.extension == SdkConstants .EXT_RES
0 commit comments