gradle 构建期间使用不同方法进行资源合并

Resource merging during gradle builds with different approaches

正如我们所知,有两种方法可以为每个 productFlavorbuildType 创建单独的 res 目录。

第一种方法 是在 src 文件夹下设置单独的目录,例如src\flavor1\ressrc\flavor2\res

第二种方法 是在 build.gradle like

中指定 sourceSets 下的 res 目录
sourceSets {
    main {
        res.srcDirs    = ['res']
    }
    dev {
        res.srcDirs    = ['res-dev']
    }
}

我确定资源合并将在第一种方法中发生,并且将从main' s sourceSet.

问题是关于上面的第二种方法

资源合并的方式是否与使用单独文件夹的第一种方法相同?在这里,我明确要分配一个单独的目录。对于在指定目录下找不到的资源,是否仍然回退到main?

我问这个是因为 THIS LINK on http://tools.android.com/ 中的示例在文章末尾显示 'src/main/res' 被显式添加如下:

android.sourceSets {
   main.res.srcDirs = ['src/main/res', 'src/main/res2']
}

有没有人这样做并且知道如果我只提供附加目录而不是 main 作为附加目录,资源合并是否仍然会发生?它会因为缺少资源而回退到主目录吗?

好的,我自己尝试了上述每种情况。调查结果如下:

  1. 无需指定src\main\res目录。回退发生在主 res 目录的两种方法中。
  2. 这对 resassets 文件夹都非常有效。而且我认为它对其他文件夹也将完全相同。我不需要那些所以没试过。但是,我想不出有什么理由可以让 resassets 文件夹正常工作。

因此,它按预期工作。