Lets say I have the following sourceSets
:
sourceSets {
flavor1 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor2 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
flavor3 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor4 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
}
If you notice flavor1
and flavor3
have same srcDirs and so does flavor2
and flavor4
.
Trying Possibility#1
I was trying to figure out if there is a way to avoid the redundancy by using something like this:
sourceSets {
flavor1, flavor3 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor2, flavor4 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
}
The above does not work (already tried). Looking for something similar so that i can just provide a common set of sourceDirs
for a set of flavors. Anyone tried doing something similar and can provide some pointers?
Trying Possibility#2
Does the name of sourceSets
need to be same as that of flavors?
Can i name the sourceSets
separately and then map them to productFlavors
like this?
productFlavors {
flavor1 {
sourceset = "src1"
}
flavor2 {
sourceset = "src2"
}
flavor3 {
sourceset = "src1"
}
flavor4 {
sourceset = "src2"
}
}
sourceSets {
src1 {
}
src2 {
}
}
Trying Possibility#3
Can the sourcesets be dynamically assigned via tasks somehow to achieve the same stuff?
UPDATE
Douglas's answer sort of helped me get very close to what i was looking for eventually (reducing the code in build.gradle). He used Possibility#3 above. Thanks Douglas! Any better alternative from bounty hunters is still welcome (something closer to possibilities #1 and #2 above). If nothing comes up the bounty is Douglas's already when the period ends as I've accepted his answer. But still will remain optimistic about finding a better alternative.
flavorDimensions
? tools.android.com/tech-docs/new-build-system/… – ExtravaganceflavorDimension
s with 4 flavors - and then introducing anotherflavorDimension
would only make matters worse... – Extravagance.root
in this case? I have onlyassets
andres' to mention in the
sourceSets`. Can you help with an example of what you are thinking of that would help in this case? – Rabiah