当有多种风味/类型时,gradle支持仅为某些flavor / buildtype排除源文件?

时间:2016-05-24 14:32:34

标签: android gradle

我的源代码树:

app/src/main/java/com/example/A.java
app/src/main/java/com/example/B.java

我想使用productFlavor或buildType自定义一些特定的构建。 但我发现sourceSets中的exclude语句也会影响其他productFlavor / buildType。

示例 1。

productFlavors {
    full {
        sourceSets {
            main {
                java {

                }
            }
        }
    }
    mini {
        sourceSets {
            main {
                java {
                    exclude '**/A.java'
                }
            }
        }
    }
}

构建后,两者

  app-mini-release.aar 

  app-full-release.aar 

是一样的。

示例 2:

buildTypes {
    release {
        minifyEnabled true 
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }

    debug {
        sourceSets {
            main {
                java {
                    exclude '**/A.java'
            }
        }
    }
}

构建后,两者

app-debug.aar 

app-release.aar 

包含A.class

1 个答案:

答案 0 :(得分:0)

将您的A.java文件从app/src/full/java/com/example/

替换为app/src/main/java/com/example/

之后,如果您在构建变体中选择miniDebug,它将从

中排除文件
  

应用程序/ SRC /全/ *