I am facing an weird problem regarding Gradle source set. I suspect this problem belongs to Android Studio. My Gradle file defines 4 product flavors and 4 source set including main. My activity files are put on different source set but not in main source set. But when I open an activity file from any of source sets, Android studio showing: "Duplicate file found on the file... refer to other source set file." Since there is no copy of the file in main source set this message shouldn't appear. However I can build and run using any product flavours and working correctly according to source set.
My gradle file looks like:
defaultConfig {
applicationId "com.x.y.z"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
productFlavors {
design {
resValue("string", "app_name", "App Design")
applicationIdSuffix ".design"
versionNameSuffix "-design"
}
dev {
resValue("string", "app_name", "App Dev")
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
}
prod {
resValue("string", "app_name", "App Prod")
applicationIdSuffix ".prod"
versionNameSuffix "-prod"
}
playStore {
resValue("string", "app_name", "Real App Name")
}
}
sourceSets {
main {
java.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']
assets.srcDirs = ['src/main/assets']
}
design {
java.srcDirs = ['src/design/java']
res.srcDirs = ['src/design/res']
assets.srcDirs = ['src/design/assets']
}
dev {
java.srcDirs = ['src/dev/java']
res.srcDirs = ['src/dev/res']
assets.srcDirs = ['src/dev/assets']
}
prod {
java.srcDirs = ['src/prod/java']
res.srcDirs = ['src/prod/res']
assets.srcDirs = ['src/prod/assets']
}
}
Source directory looks like:
src
--androidTest
--design
--assets
--java
--res
--dev
--assets
--java
--res
--main
--assets
--java
--res
--prod
--assets
--java
--res