Skip to content

Instantly share code, notes, and snippets.

@Jween
Last active August 29, 2015 14:07
Show Gist options
  • Save Jween/61b82c36b99a1ffbeea2 to your computer and use it in GitHub Desktop.
Save Jween/61b82c36b99a1ffbeea2 to your computer and use it in GitHub Desktop.
filter resources example script for android gradle
def filterVariant = { variantToFilter, filterTask->
def variantRes = android.sourceSets."${variantToFilter.toLowerCase()}".res
variantRes.srcDirs.each{ resDir->
def filterOutput = "${buildDir}/res-filter"
if (resDir.toString().contains(filterOutput)) {
return
}
// remove all the add-resource nodes
filterTask.from fileTree(dir: resDir, include: 'values*/*.xml')
filterTask.filter { String line ->
line.contains('<add-resource') ? '' : line
}
// @workaround https://code.google.com/p/android/issues/detail?id=64957
filterTask.from fileTree(dir: resDir, exclude: 'values*/*.xml')
filterTask.into "${filterOutput}/${variantToFilter}"
variantRes.srcDirs = [] << "${filterOutput}/${variantToFilter}"
// proper way shall be this, google is still working on it
// filterTask.from fileTree(dir: resDir, include: 'values*/*.xml')
// filterTask.into "${filterOutput}/${variantToFilter}"
// variantRes.exclude "${resDir}/values*/*.xml"
// variantRes.srcDirs = variantRes.srcDirs << "${filterOutput}/${variantToFilter}"
}
}
project.task('filterMainResources', type: Copy) {
filterVariant 'main', it
}
android.libraryVariants.all{ variant ->
project.task("filter${variant.name}Resources", type: Copy) { filterTask ->
filterVariant "${variant.name}", filterTask
filterTask.dependsOn "filterMainResources"
}
variant.mergeResources.dependsOn("filter${variant.name}Resources")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment