У меня есть несколько версий моего приложения: общая версия, скажем mainapp
и несколько сборок для каждого клиента, скажем custom1
, custom2
, custom3
. И я хочу иметь базовый аромат для всех вкусов customX.Базовый аромат Android без ошибки повторяющегося класса
Я пытался сделать так:
Создать структуру проекта:
app\src\main
app\src\mainapp
app\src\commonflavor
app\src\custom3
И конфигурации:
productFlavors {
mainapp {
}
custom1 {
}
custom2 {
}
custom3 {
}
}
sourceSets {
custom1 {
java.srcDirs = ['src/commonflavor/java']
}
custom2 {
java.srcDirs = ['src/commonflavor/java']
}
custom3 {
java.srcDirs = ['src/commonflavor/java', 'src/custom3/java']
}
}
В commonflavor
я ставлю общие классы Java для всех вкусов customX, скажем, MainActivity.java
и SecondActivity.java
. Но в custom3
Мне нужно отдельно SecondActivity.java
.
В этом случае у меня есть ошибка error: duplicate class: SecondActivity
от src/commonflavor/java
и src/custom3/java
.
Сейчас я решил это с помощью класса dupllication:
sourceSets {
custom1 {
java.srcDirs = ['src/commonflavor/java']
}
custom2 {
java.srcDirs = ['src/commonflavor/java']
}
custom3 {
java.srcDirs = ['src/custom3/java']
}
}
Я скопированный src/commonflavor/java
от srcDirs и скопировать MainActivity.java
в custom3
. Проблема в том, что у меня есть 2 клона MainActivity.java
файла в src/commonflavor/java
и src/custom3/java
Как разрешить эту ситуацию без дублирования кода?
Я подозреваю, что нет никакой необходимости в 'commonflavor' множества источников. Эти файлы могут очень просто оставаться под 'src/main' и наследоваться по умолчанию всеми вкусами. –