Java Android gradle flavors,每个flavor的sourceset带有多个srcdir,强制重写值/strings.xml

Java Android gradle flavors,每个flavor的sourceset带有多个srcdir,强制重写值/strings.xml,java,android,xml,gradle,android-gradle-plugin,Java,Android,Xml,Gradle,Android Gradle Plugin,这是一个后续问题 提出了一个奇怪的问题 也就是说,如中所述,当为每种口味使用多个源集时,对于res和resources,一切正常,来自其他目录的资源都合并在一起 问题: flavor values/strings.xml不会替换主项目中的值/strings.xml (这是我保存应用程序标签和应用程序图标的地方)。由于这种行为,我的应用程序图标和标题被弄乱了(不是因为味道) 我在这里发现了一些东西: (标题处理多个资源文件夹)但这并不能帮助我更进一步,因为我不明白如何强制此特定风格的文件覆盖主项目

这是一个后续问题

提出了一个奇怪的问题

也就是说,如中所述,当为每种口味使用多个源集时,对于res和resources,一切正常,来自其他目录的资源都合并在一起

问题: flavor values/strings.xml不会替换主项目中的值/strings.xml (这是我保存应用程序标签和应用程序图标的地方)。由于这种行为,我的应用程序图标和标题被弄乱了(不是因为味道)

我在这里发现了一些东西: (标题处理多个资源文件夹)但这并不能帮助我更进一步,因为我不明白如何强制此特定风格的文件覆盖主项目中的其他文件

==编辑==

我的项目结构和build.gradle(主项目)

项目结构

  • 第三方

    • 图形
      • 图标集
        • IconsetBase
        • Iconset1
        • Iconset3
  • 主要项目

    • src
      • 主要项目(主要项目)
      • flavor1
      • flavor2
build.gradle(主项目)


已解决

问题在于MainProject.iml


将味道路径添加到RES\u文件夹\u RELATIVE\u路径后,一切正常

您可以发布build.gradle文件吗?当然可以。请参见==编辑==下的内容,因此,如果两种版本都有一个main strings.xml和strings.xml,则不能这样覆盖它。去掉main strings.xml中的任何重复字符串,因为它们永远不会被使用,对吗?您的main strings.xml应该只包含两种风格都将使用的字符串。当然,但存在一个问题。它是app_name元素。如果我从mail strings.xml中删除了它,那么我会得到一个错误,无法生成。我试图从main中删除app_名称,并将其添加到其他风格中。不工作是什么样的错误?我的main strings.xml中没有我的app_name字符串,这没有问题。
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        repositories {
            mavenCentral()
        }
        classpath 'com.android.tools.build:gradle:0.10.0'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    useOldManifestMerger false
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    lintOptions {
       ...
    } 

sourceSets {
    main.java.srcDirs = ['src/main/java']
    main.resources.srcDirs = ['src/main/res']
}

signingConfigs {
    ...
}

buildTypes {
    ...
}

// Common dependencies
dependencies {
   compile project(':3rdparty:Graphics:Iconsets:IconsetBase')
}

defaultConfig {
    ...
}

productFlavors {
    flavor1         { packageName "..."}
    flavor2         { packageName "..."}
}

android.sourceSets.flavor1 {
    res {
        srcDirs = ['flavor1','../3rdparty/Graphics/Iconsets/IconsetBase/src/main/res', '../3rdparty/Graphics/Iconsets/Iconset1/src/main/res']
    }
    resources {
        srcDirs = ['flavor1','../3rdparty/Graphics/Iconsets/IconsetBase/src/main/res', '../3rdparty/Graphics/Iconsets/Iconset1/src/main/res']
    }
}
android.sourceSets.flavor2 {
    res {
        srcDirs = ['flavor2','../3rdparty/Graphics/Iconsets/IconsetBase/src/main/res', '../3rdparty/Graphics/Iconsets/Iconset3/src/main/res']
    }
    resources {
        srcDirs = ['flavor2','../3rdparty/Graphics/Iconsets/IconsetBase/src/main/res', '../3rdparty/Graphics/Iconsets/Iconset3/src/main/res']
    }
}
}

dependencies {
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'com.google.android.gms:play-services:4.3.23'
}