Вкусы продуктов, наборы источников. Исключая файлы - android studio
У меня есть приложение с 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'
}
Я добавил исходные наборы для ароматов и добавил несколько файлов для каждого конкретного аромата.
Более того, я хотел указать, какие файлы исключить в flav1 из основного набора источников.
Файлы для исключения в основном наборе исходных файлов находятся в main/java/com/example/testing/
там есть
- file1.java
- file2.java
- file3.java
- file4.java
В каждом аромате я хотел бы исключить 1 файл из них. Но я хочу, чтобы во вкусе было все остальное. Пример:
flavor1 должен иметь: file2, file3, file4.
Falvor2 должен иметь: файл1, файл3, файл4.
и т.п.
Как вы можете видеть, файлы являются общими для большинства разновидностей, поэтому я не хочу помещать их все во вкусы, потому что это будет реплика кода, и каждое изменение в каждом файле должно быть применено ко всем различным файлам вкуса.
Я видел это:
sourceSets {
flavor1 {
java {
srcdir 'testing'
exclude '/file1'
}
}
Но это не будет работать для меня. Я не могу разобраться.
Спасибо }
0 ответов
Немного поздно, но может быть полезно другим пользователям.
Я думаю, что хорошей альтернативой является размещение всего вашего общего кода (или ресурсов) в одной или нескольких конкретных папках, скажем так sharedfoo
и используйте gradle, чтобы добавить их в любые вкусы, которые в этом нуждаются.
productFlavors {
flavor1 {
applicationId "com.flavor1"
}
flavor2 {
applicationId "com.flavor2"
}
flavor3 {
applicationId "com.flavor3"
}
flavor4 {
applicationId "com.flavor4"
}
}
sourceSets {
flavor1 { java.srcDirs = ['src/flavor1/java', 'src/sharedfoo/java'] }
flavor2 { java.srcDirs = ['src/flavor2/java', 'src/sharedfoo/java'] }
}