material-components-android の catalog で、resフォルダが細分化されているのを見つけたので、どうやっているのかを調べました。
sourceSetsを定義
appのbuild.gradleに対し、sourceSetsとresを置きたい場所を定義します。
srcDirsに書かれたフォルダをresフォルダに追加しています。
build.gradle
def srcDirs = [
'abc'
]
android {
// 省略...
sourceSets {
main {
res.srcDirs = ['src/main/res']
srcDirs.forEach {
res.srcDirs += 'src/main/java/com/kyaracter/myapplication/' + it + '/res'
}
}
}
}
resフォルダとして認識されると、abcにあるresフォルダの見た目がリソースフォルダのものに変わります。

使いみち
valuesだけでなく、layoutやmenuも同様に細分化できるので、ファイル数が多すぎて困った場合に使える感じです。
また、 abc/res/values/string.xml に定義する文字列は、この名前空間の外側でも参照できます。