1.1.3. sourceSets
sourceSets
sourceSets

- Gradle은 Build Variants의 소스코드, 리소스를 각각 다르게 설정할 수 있다.
- 지정하고자 하는 디렉터리들을 미리 생성해두어야 한다.
- BuildType과 ProductFlavor의 조합을 각각 지정할 수도 있고, 필요한 경우만 지정할 수도 있다.
- BuildType과 ProductFlavor를 조합하여 지정할 경우 ProductFlavor+BuildType의 순서로 작성한다.
   ex) debug & free => freeDebug

다음의 예시는 위의 Build Variants를 각각 지정하여 변경한 것이다.
android { ... sourceSets { // main은 디폴트 위치 main { manifest.srcFile 'src/main/AndroidManifest.xml java.srcDirs = ['src/main/java'] res.srcDirs = ['src/main/res'] } // Product Flavor만 따로 지정하는 경우 free { manifest.srcFile 'src/free/AndroidManifest.xml java.srcDirs = ['src/free/java'] res.srcDirs = ['src/free/res'] } paid { manifest.srcFile 'src/paid/AndroidManifest.xml java.srcDirs = ['src/paid/java'] res.srcDirs = ['src/paid/res'] } // Build Type만 따로 지정하는 경우 debug { res.srcDirs = ['src/main/resDebug'] } alpha { res.srcDirs = ['src/main/resAlpha'] } beta { res.srcDirs = ['src/main/resBeta'] } release { res.srcDirs = ['src/main/resReal'] } // 둘을 조합하여 지정하는 경우 freeDebug { res.srcDirs = ['src/free/resDebug'] } freeAlpha { res.srcDirs = ['src/free/resAlpha'] } freeBeta { res.srcDirs = ['src/free/resBeta'] } freeRelease { res.srcDirs = ['src/free/resReal'] } paidDebug { res.srcDirs = ['src/paid/resDebug'] } paidAlpha { res.srcDirs = ['src/paid/resAlpha'] } paidBeta { res.srcDirs = ['src/paid/resBeta'] } paidRelease { res.srcDirs = ['src/paid/resReal'] } } ... }