Android gradle buildTypes: повторяющийся класс
Я конвертирую свое приложение для использования gradle и пытаюсь использовать buildTypes. у меня есть Constants
класс, который я хочу изменить для моей сборки выпуска. Итак, у меня есть файл на src/main/java/my/package/name/Constants.java
и в src/release/java/my/package/name/Constants.java
,
Когда я пытаюсь это сделать, gradle сообщает мне, что сборка не удалась Constants
файл в моем типе сборки выпуска, с ошибкой, что это дублирующий класс.
Я также попытался добавить другой sourceSet для этого в моем build.gradle
как это:
sourceSets {
main {
java.srcDirs = ['src/main/java'];
//...
}
release {
java.srcDirs = ['src/release/java'];
}
}
Но это все равно дает мне ту же ошибку. Вот мне и интересно, что я тут не так делаю?
2 ответа
Вы не можете иметь класс в main
а также release
, Вы должны разделить это на что-то вроде debug
а также release
,
Gradle объединит исходные наборы для каждого buildType
с main
,
Это причина, почему класс дублируется в вашем release
строить.
Итак, правило таково: поместите класс в main
или в каждом buildType
но не оба.
Ответ от "fix" помог мне в пути, но я получил ошибку от основного Gradle, сказав, что константа отсутствует (в моем классе Config). Это потому, что у меня был мой класс только в платной и бесплатной версии, а не в основной. Не удалось найти класс Config. Я не уверен, что это ошибка в Studio... Я наконец-то решил ее следующим образом:
buildTypes {
release {
...
buildConfig "public static final boolean XYZ = false;"
}
}
И вместо того, чтобы использовать мою константу класса Config.XYZ, я использовал buildConfig.XYZ