Используйте разные классы для каждого варианта сборки

У меня есть класс 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,

Почему это не нужно для ресурсов, потому что объединение ресурсов может переопределять ресурсы по типам сборки. Там нет кода слияния.

Другие вопросы по тегам