Created
May 22, 2018 02:01
-
-
Save gpeal/d68e4fc1357ef9d126f25afd9ab4eee2 to your computer and use it in GitHub Desktop.
Airbnb Gradle Flavors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
apply from: './flavors.gradle' | |
... | |
android { | |
buildTypes { | |
productFlavors { | |
project.flavors.each { flavor, config -> | |
"$flavor" { | |
dimension 'scope' | |
if (flavor != 'full') { | |
versionNameSuffix ".$flavor" | |
} | |
} | |
} | |
} | |
} | |
} | |
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class FlavorOptions { | |
final String entryModule | |
FlavorOptions(String entryModule) { | |
this.entryModule = entryModule | |
} | |
} | |
project.ext.flavors = [ | |
full: new FlavorOptions(":flavor.full"), | |
foo: new FlavorOptions(":flavor.foo") | |
] |
@ivanalvarado Hi Ivan, unfortunately, I don't work at Airbnb anymore and don't have access to the latest code. Every time I work with gradle, it requires a lot of trial and error and Googling (you are not alone) so I won't be able to provide more specific code either.
I belive this code was at the project level app.gradle file though and flavors are used for application modules.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Been trying to piece these snippets together along with this talk, but I still have a few questions:
1. Are the feature flavors
application
orlibrary
modules?I keep running into build errors when they're
com.android.application
modules. Specifically:Error goes away when I change the module to a
com.android.library
.2. Noticed your response on your Medium article.
I assume the snippet above goes in the
app/build.gradle
file?3. What actually lives in a flavor module?
From your response to this, each flavor has its own Application class. And from Ben's talk, a LauncherActivity and some UI configurations. Am I missing anything else? Does each flavor gradle file also perform some flavor configuration or does that solely live in
app/build.gradle
?A detailed example of this set up would be greatly beneficial.