Android Flavors: several java and src directories for each flavor

Can someone explain to me how I can use for each of my tastes more than just basic and java / src specific directories? My goal is to have catalogs that are used by more than one flavor, but not all of them.

For example, I have 3 flavors: A1, A2 and B.

  • Everyone uses main / src (default src main directory)
  • A1 uses A1 / src (src directory for default design)
  • A2 uses A2 / src (src directory for default design)
  • B uses B / src (src directory for default design)
  • A1 and A2 use A / src ("special" shared directory)

Is it possible? If so, what should I add to the build.gradle file?

And as a bonus question, can I choose in what order the gradle searches for files in different directories?

For example, if I have a.png declared in both A / src and A1 / src, can I tell gradle to search this file in A / src first, and only if nothing is found, find it in A1 / src?

+3
source share
2 answers

As described here

As mentioned above, each sourceSet can define multiple resource folders.

You can define multiple resource directories. For example, something like this:

android {
     ...
     sourceSets {
            main {
                //....
                res.srcDirs = ['/src/main/res']

            }
            flavorA1 {
                 res.srcDirs = ['/src/flavor1/res', '/src/commonA/res']
            }
            flavorA2 {
                 res.srcDirs = ['/src/flavor2/res', '/src/commonA/res']
            }     
            //.....other flavors   
     }
}
+9
source

I found a slightly different format needed to install java source files

sourceSets {
    favorA1 {
        java {
            srcDirs('src/favorA1/java/src', 'src/commonA/java/src')
        }
    }
    favorA2 {
        java {
            srcDirs('src/favorA2/java/src', 'src/commonA/java/src')
        }
    }
}

Gradle Java
Gradle Source Api

+2

Source: https://habr.com/ru/post/1548645/


All Articles