1

使用 android 风格,我试图从另一个风格继承一种风格并覆盖父类中的一个类。除了目标类显示为重复之外,一切看起来和工作都很完美。我的猜测是有一种方法可以从 sourceSets 中排除父风味的类,例如:

sourceSets {
    benchmark {
        java {
            srcDirs = ['src/main/java', 'src/offline/java', 'src/benchmark/java']

            exclude { '**/Facade.java' in sourceSets.offline.files }
        }
    }
}

有人可以帮我弄这个吗。谢谢!

4

1 回答 1

0

不要从其他风味继承,而是使用风味维度

android {
    ...


    flavorDimensions "version", "online"


    productFlavors {    
        benchmark {
            dimension "version"
            ...
        }

        standard {
            dimension "version"
            ...
        }

        online {
            dimension "online"
            ...
        }

        offline {
            dimension "online"
            ...
        }
    }
    //optionally filter combinations you don't want
    variantFilter { variant ->
        if (variant.flavors*.name.contains("online") && variant.flavors*.name.contains("benchmark")) {
            variant.ignore = true
        }
    }
}

放入一个facade.java版本src\benchmark\java\com\yourcompany\namespace\facade.java

将替代版本放入src\standard\java\com\yourcompany\namespace\facade.java

无论哪种构建风格都始终相同的文件留在标准目录中,src\main\java\com\yourcompany\namespace\

于 2017-04-11T18:57:07.860 回答