Используйте разные классы для каждого варианта сборки
У меня есть класс Application, который я хочу отличать в каждом варианте сборки, таком как отладка и выпуск.
это моя карта:
app/
|
|----debug/
|----java\
|----com.example.App.class
|----res\
|----mipmap-hdpi
|----main/
|----java\
|----com.example.App.class
|----res\
|----mipmap-hdpi
но в андроид студии выдают это сообщение об ошибке "дубликат класса найден в..."
но это не показывает никакой ошибки в моих ресурсах.
Мой вопрос заключается в том, почему Gradle не может понять, какой класс следует использовать в разных вариантах сборки, но он может решить, какой ресурс следует использовать в разных вариантах сборки.
1 ответ
Код под main
распределяется между всеми типами сборки. Следовательно, класс там дважды, один раз из debug
и снова из main
,
Чтобы иметь исходные файлы для конкретного типа сборки, поместите их в определенные папки типа сборки вместо main
, Например, если у вас есть обычный debug
а также release
типы сборки, поместите другой вариант под release
,
Почему это не нужно для ресурсов, потому что объединение ресурсов может переопределять ресурсы по типам сборки. Там нет кода слияния.