I have 3 product flavors excluding the main
one:
productFlavors {
xxx {
applicationId 'com.xxx'
}
yyy {
applicationId 'com.yyy'
}
zzz {
applicationId 'com.zzz'
}
}
As I understand it, these product flavors inherit main
's resources and it looks something like this:
+------->xxx
|
main----+------->yyy
|
+------->zzz
So when I build xxx
, Gradle bundles stuff from src/main
and from src/xxx
folders.
Now, I need it to look like this:
+------->xxx
|
main----+------->yyy------->zzz
In other words, I want zzz
to use yyy
's resources as well as main
's. Can Gradle do this?
It may depends on what exactly you want to "override" in zzz. In my project I need productFlavor inheritance too. But I needed override manifest only. I created directory for zzz with custom AndroidManifest.xml and changed other zzz src paths to yyy in build.gradle:
sourceSets {
zzz.java.srcDirs = ['src/yyy/java']
zzz.res.srcDirs = ['src/yyy/res']
...
...
}
productFlavors {
xxx {}
yyy {}
zzz {}
}
P.S. Created a feature request for this https://code.google.com/p/android/issues/detail?id=183350
I have answered this in another thread. I will just copy and paste my answer here, hoping it will be helpful to you.
I was looking for a similar thing in gradle and found Multi-flavor variants. I have an app that should have versions A and B, and each version has dev and pro environments, so I ended up with this in my gradle:
flavorDimensions 'app', 'environment'
productFlavors {
versionA {
flavorDimension 'app'
}
versionB {
flavorDimension 'app'
}
pre {
flavorDimension 'environment'
}
pro {
flavorDimension 'environment'
}
}
And in my build variants I have versionAPreDebug, versionAPreRelease, versionBPreDebug, versionBPreRelease, etc. I think what you need is something like that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With