Skip to content

Commit ff7f84c

Browse files
committed
Fix issue #284 compressing processed resource file
1 parent e8b2a31 commit ff7f84c

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

booster-task-compression-processed-res/src/main/kotlin/com/didiglobal/booster/task/compression/processed/res/ProcessedResourcesCompressionVariantProcessor.kt

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package com.didiglobal.booster.task.compression.processed.res
33
import com.android.SdkConstants
44
import com.android.SdkConstants.DOT_PNG
55
import com.android.build.gradle.api.BaseVariant
6+
import com.android.build.gradle.internal.tasks.factory.dependsOn
67
import com.didiglobal.booster.compression.CompressionReport
78
import com.didiglobal.booster.compression.CompressionResult
89
import com.didiglobal.booster.compression.CompressionResults
9-
import com.didiglobal.booster.gradle.processResTask
1010
import com.didiglobal.booster.gradle.processResTaskProvider
1111
import com.didiglobal.booster.gradle.processedRes
1212
import com.didiglobal.booster.gradle.project
@@ -17,6 +17,9 @@ import com.didiglobal.booster.task.spi.VariantProcessor
1717
import com.didiglobal.booster.transform.util.transform
1818
import com.google.auto.service.AutoService
1919
import 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
2023
import java.io.File
2124
import java.text.DecimalFormat
2225
import java.util.zip.ZipEntry
@@ -32,17 +35,33 @@ import java.util.zip.ZipFile
3235
class 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+
4665
private 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

Comments
 (0)