2014-01-29 1 views
3

У меня есть вопрос, когда дело доходит до ароматов в Android Studio с помощью Gradle ... Рассмотрим следующий пример:сборки Варианты использования Gradle в Android Studio

У вас есть 3 вкусов вашего телосложения; Flavor1, Flavor2 и Flavor3.

Все 3 аромата полагаются на один и тот же файл, назовите его MainActivity.java для простоты. Кроме того, все 3 варианта имеют свой собственный файл констант, назовите его Constants.java.

Кроме Constants.java, Flavor1 и Flavor2 полагаются на один и тот же исходный код. А именно, Flavor1 и Flavor2 используют следующие файлы из основного, MainActivity.java и еще одного файла, для простоты называйте это AnotherActivity.java.

Теперь Flavor3 использует MainActivity.java, но, с другой стороны, требуется дополнительная настройка и некоторые изменения в AnotherActivity.java.

File Structure: 
src 
-main 
--java 
---MainActivity.java 
---AnotherActivity.java 

-Flavor1 
--java 
---Constants.java 
-Flavor2 
--java 
---Constants.java 
-Flavor3 
--java 
---Constants.java 
---AnotherActivity.java 

Есть ли способ сделать этот тип построения зависимости без получения дубликата ошибки файла класса в Android Studio с помощью Gradle?

Спасибо!

С наилучшими пожеланиями, Кристофер Стивен

ответ

5

Я обнаружил, что только ресурсы сольются этот путь. Исходные файлы объединяются в один путь сборки. Вам нужно будет скопировать ваш AnotherActivity.java каждый вкус, как вы это делали, с Constants.java. Постарайтесь реорганизовать ваш источник немного, чтобы уменьшить дублирование, это лучшее, что вы можете сделать. Вероятно, вы могли бы выполнить это с помощью AbstractAnotherActivity.java в src/main/java, чтобы другие расширялись.

Вы заметите, что при выборе варианта сборки в Android Studio он покажет вам только источник из выбранного варианта в представлении пакета.

0

Класс полностью заменяет другой при использовании ароматов Gradle (с тем же именем). Лучшая практика, чтобы избежать повторного использования кода, состоит в том, чтобы иметь общий код в вашей главной службе, чтобы вы не дублировали его (в противном случае изменения должны выполняться в нескольких местах). Ссылка на любой дополнительный код/​​переопределения в вашем классе AnotherActivity.