为资产和资源文件夹指定不同的路径-Android Studio

为资产和资源文件夹指定不同的路径-Android Studio,android,android-studio,gradle,Android,Android Studio,Gradle,我需要建立我的项目,选择使用不同的资产和资源文件夹。因此,我不想手动替换资产和资源文件夹,而是想知道在gradle.build或任何库中是否有方法指定这些文件夹的路径 我偶然看到一篇文章,其中提到了一些关于不同口味的东西。这是正确的方法吗?如果是,如何更改文件夹的路径 productFlavors { flavor2 { } flavor1 { } } sourceSets{ flavor2 { resources.srcDirs =

我需要建立我的项目,选择使用不同的资产和资源文件夹。因此,我不想手动替换资产和资源文件夹,而是想知道在gradle.build或任何库中是否有方法指定这些文件夹的路径

我偶然看到一篇文章,其中提到了一些关于不同口味的东西。这是正确的方法吗?如果是,如何更改文件夹的路径

productFlavors {
    flavor2 {
    }
    flavor1 {
    }
}

sourceSets{

    flavor2 {
        resources.srcDirs = ['src/flavor2/java','src/commonFiles/java']
        assets.srcDirs = ['/mybuilds/f2assets']
        res.srcDirs = ['res-flavor2','res']
    }

    flavor1 {
        resources.srcDirs = ['src/flavor2/java','src/commonFiles/java']
        assets.srcDirs = ['/mybuilds/f1assets']
        res.srcDirs = ['res-flavor1','res']
    }

}

我不知道如何使用不同的路径。为什么“resources.srcDirs”有两条路径?

构建风格是正确的方法。文件夹的名称是自动完成的,因此不需要在gradle中添加代码。你只需要在app/src下添加一个名为flavor的文件夹,在那里你可以添加不同的res文件夹。构建时,只需从AndroidStudio左下角的BuildVariants视图中选择正确的样式。您的项目结构应如下所示:

project/app/src/main
project/app/src/flavor1/res
project/app/src/flavor2/res
在格拉德尔:

productFlavors {
  flavor2 {
  }
  flavor1 {
  }
}

请注意,默认情况下,gradle将从主文件夹获取资源,如果它不存在,它将在flavor中搜索。因此,请确保您在flavor文件夹中有不同的资源,而不是在主文件夹中。

构建flavor旨在创建不同种类的相同类型的应用程序。例如,如果您需要为在10年级/9年级学习的学生创建一个应用程序,那么现在您将无法为每个学生创建不同的应用程序。相反,使用构建风格,您将能够使用大多数相同的代码和每个应用程序的特定代码并行创建不同的应用程序。如果需要,您还可以将
java
目录放在flavor目录中。您只需要确保每个flavor都具有它所需的所有类(也就是说,不包含在主源集中但从那里引用的类),并且类不重复(例如在main和a flavor中定义)。我尝试过,但它也在项目结构上加载了主res文件。新的res文件是红色的,因此它们不会在运行时使用。查看下图: