【发布时间】:2016-08-04 12:35:53
【问题描述】:
我有一个包含 4 种产品风格的应用。
build.gradle 看起来像这样:
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.testing"
minSdkVersion 23
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
flavor1 {
applicationId "com.flavor1"
}
flavor2 {
applicationId "com.flavor2"
}
flavor3 {
applicationId "com.flavor3"
}
flavor4 {
applicationId "com.flavor4"
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
}
我已为风味添加了 sourceSets,并为每种特定风味添加了一些文件。
此外,我想指定哪些文件 从主 sourceSet 中排除 flavor1。
主sourceSet中要排除的文件在main/java/com/example/testing/里面有
- file1.java
- file2.java
- file3.java
- file4.java
在每种口味中,我想排除 1 个文件。但我希望味道拥有所有其余部分。示例:
flavor1 应该有:file2、file3、file4。
falvor2 应该有:file1、file3、file4。
等等
正如您所看到的,这些文件由大多数风格共享,所以我不想将它们全部放在风格中,因为它将是代码副本,并且每个文件中的每个更改都必须应用于所有不同的风格文件.
我看过这个:
sourceSets {
flavor1 {
java {
srcdir 'testing'
exclude '/file1'
}
}
但这对我不起作用。我想不通。
谢谢 }
【问题讨论】:
-
试图增加这个..没有人?
-
我会再试一试......提前致谢
-
我已经解决了,查看这个答案stackoverflow.com/questions/33263567/…
-
嗨,我在这里找到了解决方案bulldogjob.com/articles/…。我试过了,它对我有用
标签: android android-gradle-plugin build.gradle android-productflavors android-sourcesets