1.1.3. 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']
}
}
...
}