6

I have a library module called library that has two flavors flavor1 and flavor2. Then I have two application modules, lets call them app1 and app2 that will use this library module and each one will use it with specific flavor .. eg. app1 will always use library with flavor1 flavor. How should I configure gradle dependencies to make it do what I want to? If I try just implementation project(':library') in app1 build.gradle it obviously does not work because it doesn't know which flavor to choose .. so I’ve tried something like implementation project(path: ':library', configuration: 'flavor1Release') but that does not work too, it prints a lot of errors like

ERROR: Unable to resolve dependency for ':app1@debug/compileClasspath': Could not resolve project :library.
Show Details
Affected Modules: app1

ERROR: Unable to resolve dependency for ':app1@debugAndroidTest/compileClasspath': Could not resolve project :library.
Show Details
Affected Modules: app1

ERROR: Unable to resolve dependency for ':app1@debugUnitTest/compileClasspath': Could not resolve project :library.
Show Details
Affected Modules: app1

ERROR: Unable to resolve dependency for ':app1@release/compileClasspath': Could not resolve project :library.
Show Details
Affected Modules: app1

ERROR: Unable to resolve dependency for ':app1@releaseUnitTest/compileClasspath': Could not resolve project :library.
Show Details
Affected Modules: app1

I've seen some questions here on SO like here that says to copy flavors from library module to main app module, but it does not make sense to me, app1 doesn't know anything about flavor2 and I don't want to introduce it there.

Billda
  • 5,707
  • 2
  • 25
  • 44
  • Possible duplicate of [Multi flavor app based on multi flavor library in Android Gradle](https://stackoverflow.com/questions/24860659/multi-flavor-app-based-on-multi-flavor-library-in-android-gradle) – Jeel Vankhede May 27 '19 at 10:38
  • 1
    @JeelVankhede that is the solution with copying the flavors to all modules which does not make sense in my case. – Billda May 27 '19 at 10:54

1 Answers1

9

You should define missingDimensionStrategy for both app1 and app2.

For example:

// app1/build.gradle

 defaultConfig {
    missingDimensionStrategy 'library', 'flavor1'
}

// app2/build.gradle

 defaultConfig {
    missingDimensionStrategy 'library', 'flavor2'
}
Saeed Masoumi
  • 8,746
  • 7
  • 57
  • 76
  • You are right! Just one small change, 'library' in your example should specify flavor dimension :) – Billda May 28 '19 at 11:12