6

我面临一个关于 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
4

0 回答 0