Skip to content

Instantly share code, notes, and snippets.

@realdadfish
Created November 29, 2019 14:51
Show Gist options
  • Save realdadfish/8f35689f4a667705a28fae209afc9097 to your computer and use it in GitHub Desktop.
Save realdadfish/8f35689f4a667705a28fae209afc9097 to your computer and use it in GitHub Desktop.
task resolveDependencies {
description "Resolves dependencies for all build variants of this Android module"
doLast {
project.buildscript.configurations.findAll { it.canBeResolved }.each { it.resolve() }
}
}
def factory = project.getObjects()
if (project.plugins.hasPlugin('com.android.application')) {
android.applicationVariants.all { variant ->
resolveDependencies.dependsOn createVariantTask(factory, variant)
}
} else if (project.plugins.hasPlugin('com.android.library')) {
android.libraryVariants.all { variant ->
resolveDependencies.dependsOn createVariantTask(factory, variant)
}
}
private def createVariantTask(ObjectFactory factory, variant) {
return tasks.create(name: "resolve" + variant.name.capitalize() + "Dependencies") {
doLast {
resolveConfiguration(variant.compileConfiguration, factory, variant)
resolveConfiguration(variant.annotationProcessorConfiguration, factory, variant)
}
}
}
private def resolveConfiguration(
Configuration configuration,
ObjectFactory factory,
variant
) {
if (!configuration.canBeResolved) return
configuration.attributes {
it.attribute(
BuildTypeAttr.getATTRIBUTE(),
factory.named(BuildTypeAttr.class, variant.buildType.name)
)
it.attribute(
Attribute.of(variant.mergedFlavor.dimension, ProductFlavorAttr.class),
factory.named(ProductFlavorAttr.class, variant.flavorName)
)
}
configuration.resolve()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment