Что такое SourceSets

«Что такое SourceSets» — вопрос из категории Gradle и сборка, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SourceSets в Android — это конфигурации исходных файлов (код, ресурсы) для разных сборок (debug, release) или flavors. Позволяют разделять исходники для разных целей.

Пример в build.gradle:

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

Ключевые моменты:

  • По умолчанию есть main, debug, release
  • Можно добавлять для product flavors
  • Позволяют переопределять стандартные пути
  • Удобно для тестов (test, androidTest)