小编flu*_*uke的帖子

当存在多种风味/类型时,gradle 是否支持仅排除某些风味/构建类型的源文件?

我的源树:

app/src/main/java/com/example/A.java
app/src/main/java/com/example/B.java
Run Code Online (Sandbox Code Playgroud)

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

示例1.

productFlavors {
    full {
        sourceSets {
            main {
                java {

                }
            }
        }
    }
    mini {
        sourceSets {
            main {
                java {
                    exclude '**/A.java'
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

构建后,两者

  app-mini-release.aar 
Run Code Online (Sandbox Code Playgroud)

  app-full-release.aar 
Run Code Online (Sandbox Code Playgroud)

是相同的。

示例2:

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

    debug {
        sourceSets {
            main {
                java {
                    exclude '**/A.java'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

构建后,两者

app-debug.aar 
Run Code Online (Sandbox Code Playgroud)

app-release.aar 
Run Code Online (Sandbox Code Playgroud)

包含A.class

android gradle

5
推荐指数
1
解决办法
1661
查看次数

标签 统计

android ×1

gradle ×1