我面临一个关于 Gradle 源集的奇怪问题。我怀疑这个问题属于 Android Studio。我的 Gradle 文件定义了 4 个产品风格和 4 个源集,包括 main. 我的活动文件放在不同的源集中,但不在主源集中。但是当我从任何源集打开一个活动文件时,Android Studio 显示:“在文件上找到重复文件......请参阅其他源集文件。” 由于主源集中没有文件副本,因此不应出现此消息。但是,我可以使用任何产品风格构建和运行,并根据源集正常工作。
我的 gradle 文件看起来像:
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']
}
}
源目录如下所示:
src
--androidTest
--design
--assets
--java
--res
--dev
--assets
--java
--res
--main
--assets
--java
--res
--prod
--assets
--java
--res