Skip to content

Commit

Permalink
Merge pull request android#1009 from lihenggui/main
Browse files Browse the repository at this point in the history
Fix android#1008: Use capitalized variant name when registering badging tasks
  • Loading branch information
dturner committed Nov 1, 2023
2 parents c8c83d4 + 66cb30a commit 59994b9
Showing 1 changed file with 27 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
import org.gradle.kotlin.dsl.configure
import org.gradle.configurationcache.extensions.capitalized
import org.gradle.kotlin.dsl.register
import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.gradle.process.ExecOperations
Expand Down Expand Up @@ -58,7 +58,7 @@ abstract class GenerateBadgingTask : DefaultTask() {
aapt2Executable.get().asFile.absolutePath,
"dump",
"badging",
apk.get().asFile.absolutePath
apk.get().asFile.absolutePath,
)
standardOutput = badging.asFile.get().outputStream()
}
Expand Down Expand Up @@ -86,57 +86,60 @@ abstract class CheckBadgingTask : DefaultTask() {
if (
Files.mismatch(
goldenBadging.get().asFile.toPath(),
generatedBadging.get().asFile.toPath()
generatedBadging.get().asFile.toPath(),
) != -1L
) {
throw GradleException(
"Generated badging is different from golden badging! " +
"If this change is intended, run ./gradlew updateBadging"
"If this change is intended, run ./gradlew updateBadging",
)
}
}
}

fun Project.configureBadgingTasks(
baseExtension: BaseExtension,
componentsExtension: ApplicationAndroidComponentsExtension
componentsExtension: ApplicationAndroidComponentsExtension,
) {
// Registers a callback to be called, when a new variant is configured
componentsExtension.onVariants { variant ->
// Registers a new task to verify the app bundle.
val generateBadging = tasks.register<GenerateBadgingTask>("generate${variant.name}Badging") {
apk.set(
variant.artifacts.get(SingleArtifact.APK_FROM_BUNDLE)
)
aapt2Executable.set(
File(
baseExtension.sdkDirectory,
"build-tools/${baseExtension.buildToolsVersion}/aapt2"
val capitalizedVariantName = variant.name.capitalized()
val generateBadging =
tasks.register<GenerateBadgingTask>("generate${capitalizedVariantName}Badging") {
apk.set(
variant.artifacts.get(SingleArtifact.APK_FROM_BUNDLE),
)
aapt2Executable.set(
File(
baseExtension.sdkDirectory,
"build-tools/${baseExtension.buildToolsVersion}/aapt2",
),
)
)

badging.set(
project.layout.buildDirectory.file(
"outputs/apk_from_bundle/${variant.name}/${variant.name}-badging.txt"
badging.set(
project.layout.buildDirectory.file(
"outputs/apk_from_bundle/${variant.name}/${variant.name}-badging.txt",
),
)
)
}
}

tasks.register<Copy>("update${variant.name}Badging") {
tasks.register<Copy>("update${capitalizedVariantName}Badging") {
from(generateBadging.get().badging)
into(project.layout.projectDirectory)
}

val checkBadgingTaskName = "check${variant.name}Badging"
val checkBadgingTaskName = "check${capitalizedVariantName}Badging"
tasks.register<CheckBadgingTask>(checkBadgingTaskName) {
goldenBadging.set(
project.layout.projectDirectory.file("${variant.name}-badging.txt"))
project.layout.projectDirectory.file("${variant.name}-badging.txt"),
)
generatedBadging.set(
generateBadging.get().badging
generateBadging.get().badging,
)

output.set(
project.layout.buildDirectory.dir("intermediates/$checkBadgingTaskName")
project.layout.buildDirectory.dir("intermediates/$checkBadgingTaskName"),
)
}
}
Expand Down

0 comments on commit 59994b9

Please sign in to comment.