Android Gradle 回退到另一个构建变体

Android Gradle Fallback to Another Build Variant

我有四个构建变体,A、B、C 和 D。对于特定的 activity,我在主要源集中的基础 class 中有通用代码。我想要附加功能,以便 A 和 B 具有相同的附加功能,而 C 和 D 具有与 A 和 B 不同的相同功能。我已经能够通过复制和粘贴扩展 class 来做到这一点分别为 A & B 和 C & D 的源集;但是,这使维护成为一个问题。我无法合并变体 A 和 B 或 C 和 D,因为它们确实有其他重要差异。我如何包含 class 以便它仅在 A 和 B 中引用它并且只有 C 和 D 引用它。我尝试添加 java 源集,但找不到任何其他 classes 或其他模块。

我通过创建两个新目录 E 和 F 解决了这个问题。然后我为 A 和 B 添加了源集作为它们当前的源集,为 E 和 C 和 D 添加了 F。

sourceSets {
    A {
        java.srcDirs = ['src/A/java', 'src/public/E']
    }
    B {
        java.srcDirs = ['src/B/java', 'src/public/E']
    }
    C {
        java.srcDirs = ['src/C/java', 'src/internal/F']
    }
    D {
        java.srcDirs = ['src/D/java', 'src/internal/F']
    }
}