in ruler-gradle-plugin/src/main/kotlin/com/spotify/ruler/plugin/RulerPlugin.kt [34:82]
override fun apply(project: Project) {
val rulerExtension = project.extensions.create(name, RulerExtension::class.java)
val rulerVerificationExtension = (rulerExtension as ExtensionAware).extensions.create(
"verification",
RulerVerificationExtension::class.java
)
project.plugins.withId("com.android.application") {
val androidComponents =
project.extensions.getByType(ApplicationAndroidComponentsExtension::class.java)
androidComponents.onVariants { variant ->
val variantName = StringGroovyMethods.capitalize(variant.name)
project.tasks.register(
"analyze${variantName}Bundle",
RulerTask::class.java
) { task ->
task.group = name
val resolve = EntryParser().parse(variant.runtimeConfiguration)
resolve.forEach(task.dependencyEntries::put)
task.projectPath.set(project.path)
task.sdkDirectory.set(androidComponents.sdkComponents.sdkDirectory)
task.appInfo.set(getAppInfo(project, variant))
task.deviceSpec.set(getDeviceSpec(rulerExtension))
task.bundleFile.set(project.getBundleFile(variant))
task.mappingFile.set(project.getMappingFile(variant))
task.resourceMappingFile.set(project.getResourceMappingFile(variant))
task.ownershipFile.set(rulerExtension.ownershipFile)
task.defaultOwner.set(rulerExtension.defaultOwner)
task.workingDir.set(project.layout.buildDirectory.dir("intermediates/ruler/${variant.name}"))
task.reportDir.set(project.layout.buildDirectory.dir("reports/ruler/${variant.name}"))
task.staticDependenciesFile.set(rulerExtension.staticDependenciesFile)
task.omitFileBreakdown.set(rulerExtension.omitFileBreakdown)
task.unstrippedNativeFiles.set(rulerExtension.unstrippedNativeFiles)
task.verificationConfig.set(getVerificationConfig(rulerVerificationExtension))
// Add explicit dependency to support DexGuard
task.dependsOn("bundle$variantName")
}
}
}
}