在 Gradle Kotlin DSL 中使两种构建风格使用相同的 res 文件?

问题描述

我有 3 个名为 FlavorA,FlavorB,FlavorC 的构建风格

FlavorA 使用公共资源,所以在它的源集中没有什么额外的,FlavorB 和 FlavorC 使用相同的资源,但与公共资源不同,所以它们都有相同的 strings.xml,styles.xml 文件。 B 和 C 之间的唯一区别是 applicationId,因此我只想让 FlavorC 使用 FlavorB 的 res 文件,而不是在每次更改时复制和粘贴 strings.xml、styles.xml 文件。这可能吗?

productFlavors {
    flavorDimensions("version")
    create("FlavorA") {
        dimension("version")
        applicationId = com.example.flavora
    }
    create("FlavorB") {
        dimension("version")
        versionName = "1.0.0"
        applicationId = "com.example.flavorb"
    }
    create("FlavorC") {
        dimension("version")
        versionName = "1.0.0-test01"
        applicationId = "com.example.flavorc"
    }
}

包结构是这样的:

-main
-flavorB
   -res
-flavorC
   -res (I want to get rid of this and point to FlavorB's res file to avoid dealing with identical stuff)

解决方法

sourceSets {
        getByName("FlavorB").res.srcDirs(
                "src/flavorb/res"
        )
    }