Варианты сборки с использованием Gradle в Android Studio

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

У вас есть 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?

Благодаря!

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

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

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

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

Intereting Posts