Skip to content

Commit

Permalink
Fix issue #284 compressing processed resource file
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsonlee committed Mar 6, 2022
1 parent e8b2a31 commit ff7f84c
Showing 1 changed file with 25 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ package com.didiglobal.booster.task.compression.processed.res
import com.android.SdkConstants
import com.android.SdkConstants.DOT_PNG
import com.android.build.gradle.api.BaseVariant
import com.android.build.gradle.internal.tasks.factory.dependsOn
import com.didiglobal.booster.compression.CompressionReport
import com.didiglobal.booster.compression.CompressionResult
import com.didiglobal.booster.compression.CompressionResults
import com.didiglobal.booster.gradle.processResTask
import com.didiglobal.booster.gradle.processResTaskProvider
import com.didiglobal.booster.gradle.processedRes
import com.didiglobal.booster.gradle.project
Expand All @@ -17,6 +17,9 @@ import com.didiglobal.booster.task.spi.VariantProcessor
import com.didiglobal.booster.transform.util.transform
import com.google.auto.service.AutoService
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction
import java.io.File
import java.text.DecimalFormat
import java.util.zip.ZipEntry
Expand All @@ -32,17 +35,33 @@ import java.util.zip.ZipFile
class ProcessedResourcesCompressionVariantProcessor : VariantProcessor {

override fun process(variant: BaseVariant) {
val results = CompressionResults()
variant.processResTaskProvider?.configure {
it.doLast {
variant.compressProcessedRes(results)
variant.generateReport(results)
val compress = variant.project.tasks.register("compress${variant.name.capitalize()}ProcessedRes", CompressProcessedRes::class.java) {
it.variant = variant
}
variant.processResTaskProvider?.let { processRes ->
compress.dependsOn(processRes)
processRes.configure {
it.finalizedBy(compress)
}
}
}

}

internal abstract class CompressProcessedRes : DefaultTask() {

@get:Internal
lateinit var variant: BaseVariant

@TaskAction
fun compress() {
val results = CompressionResults()
variant.compressProcessedRes(results)
variant.generateReport(results)
}

}

private fun BaseVariant.compressProcessedRes(results: CompressionResults) {
val files = processedRes.search {
it.name.startsWith(SdkConstants.FN_RES_BASE) && it.extension == SdkConstants.EXT_RES
Expand Down

0 comments on commit ff7f84c

Please sign in to comment.