I have a requirement to remove a specific res folder from a flavour.
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
aidl.srcDirs = ['src']
assets.srcDirs = ['assets']
}
}
productFlavors {
flavor1 {
sourceSets {
flavor1 {
resources {
exclude 'res/drawable-mdpi/*'
}
}
}
}
flavorDimensions "flavor"
}
But still drawable-mdpi folder is coming to the apk.
So could anyone please specify what mistake am I making.
Thanks Vivek
You could try using splits.
Example (Right from the android SDK webpage):
If that does not work, you could separate your res/MDPI and the rest of the res/Density folders into two separate modules (let's call them, layoutMdpi and layoutAll). Both modules need to have the same package name so their R classes are identical and interchangeable (essentially the same that happens between different versions of the android SDK). Then, create at least two specific dependency configurations for your flavors, one for the ones who should use MDPI, and one for those who should not.
And then, since MDPI resources aren't present in layoutAll, you are good to go.
I finally solved this problem!
I have found this link.
And did this:
add an xml file to res/raw folder. I named it resources_discard.xml, here is it:
this file is placed in the correct directory structure for my flavor called lite ("src/lite/res/raw")
This way, contents of res/hd folder are not included in lite builds, effectively reducing my lite build apk size by 50%
Update: to exclude some images from different flavors, you have to put the images in the "assets" folder, and in gradle declare:
I also learned that you can't have subfolders in /res/raw folder.