Шаблон пользовательского проекта для студии Android с двумя или более модулями вместе

Я пытаюсь создать шаблон пользовательского проекта Android Studio с Domain и модулем данных вместе с помощью Free Marker. Но я не могу создать новый модуль во время создания нового проекта. Пожалуйста помоги мне с этим

Изменить: Я использую этот блог для создания настраиваемого шаблона https://robusttechhouse.com/tutorial-how-to-create-custom-android-code-templates/ Но он будет генерировать только один модуль приложения

Это не тривиальная задача.

Чтобы понять сложность задачи, которую вы хотите выполнить, вам придется прочитать исходный код Android Studio и / или IntelliJ Community Edition.

Поэтому я расскажу о нескольких возможных альтернативных решениях вашей проблемы, а затем объясню некоторые сложности, связанные с созданием собственного шаблона проекта Android.

  • 1-й подход: создайте проект приложения-шаблона, у которого уже есть два модуля.
    Это самый простой способ. Вы можете создать этот проект, который будет служить базой для ваших других проектов. Вы можете поместить его под контроль версий и повторное использование его версии. Из Android Studio вы можете импортировать это, используя:
    File-> New-> Import Project... File-> New-> Project From Version Control

  • Второй подход: Модифицируйте шаблон NewAndroidProject и / или шаблоны модулей, которые вы хотите использовать.
    Перейдите к следующему пути: <your_androidstudio_installation_directory>/plugins/android/lib/templates/gradle-projects/NewAndroidProject

    Это шаблон, который используется для большинства (или всех) проектов Android.

    Вместо этого это шаблон, который используется для каждого модуля, который вы используете в своем приложении, например, «приложение» moudle, библиотечный модуль и несколько других. Вы можете настроить файлы внутри, но это повлияет на ВСЕ проекты, созданные в Android Studio. <your_androidstudio_installation_directory>/plugins/android/lib/templates/gradle-projects/NewAndroidModule

    Изменение этих двух шаблонов может или не может решить вашу проблему, и я не буду подробно описывать, как вы могли бы это сделать, потому что вы можете сохранить стандартный способ создания новых проектов.

    Этот второй подход, конечно, не отвечает на ваш вопрос, и именно поэтому я представляю вам третий подход.

  • 3-й подход: создайте свой собственный плагин для Android Studio . Причина, по которой сложно добавить свой собственный шаблон проекта в Android Studio, заключается в том, что до сих пор Android Studio запрограммирована (и жестко закодирована), чтобы выбрать файлы шаблона проекта из определенного каталога и обработать их С движком шаблонов FreeMarker, и, наконец, обработать этот результат с импортером Gradle, чтобы перейти в состояние, которое он показывает, когда вы начинаете новый проект с нуля.

    Чтобы убедиться в этом, попробуйте изменить файл /plugins/android/lib/templates/gradle-projects/NewAndroidModule/root/build.gradle.ftl, даже добавив к нему комментарий, перезапустите Android Studio и запустите новый проект. Вы заметите изменения в файле build.gradle в корневой директории вашего нового проекта.

    На данный момент Android Studio жестко закодирован для использования этого конкретного шаблона, и именно по этой причине вы не сможете изменить его поведение, если вы не измените шаблоны или не создадите собственный плагин для Anroid Studio.

    Разрабатывая собственный плагин для AS, вы сможете повторно использовать определенные компоненты и мастера, которые AS использует для создания нового проекта с нуля. В вашем случае вам нужно будет создать новый мастер, который будет реализовывать несколько шагов, чем неудачный, с тем, чтобы оставить последний неповрежденным.

    Вы можете начать с загрузки исходного кода и просмотра следующих файлов: ModelWizard ModelWizardStep ActivityGalleryStep AndroidNewProjectAction

    Но прежде чем начать, позвольте мне сказать вам, что если вы не работаете в команде, то создание плагина, который решает вашу проблему, будет огромным усилием. Android Studio / IntelliJ IDEA CE – это экосистема сама по себе. Может потребоваться несколько недель, чтобы понять основы разработки плагина, так что это зависит от вас. Разработка плагина и изучение того, как работает эта IDE, – это отличное понимание того, как вы сможете автоматизировать свой рабочий процесс еще больше, как только вы поймете, как части соединяются вместе, но в этом случае я бы решил проблему, используя 1-й Подход к его простоте и эффективности.

TL; DR; Используйте первый подход.

Если вы работаете в средней / большой команде, тогда создайте плагин. (Третий подход)

EDIT: реализация третьего подхода к плагину (начало работы с разработкой плагина):

Документация SDK IntelliJ Platform: http://www.jetbrains.org/intellij/sdk/docs/index.html

Вот репозиторий github для примера кода для моего диалога Droidcon Italy 2017, который я сделал с коллегой, с которым я работаю: https://github.com/synesthesia-it/droidcon_as_plugin

Это базовый пример, который вы можете загружать, компилировать, устанавливать и экспериментировать. Он делает несколько простых вещей, чтобы продемонстрировать основные понятия.

На этой странице есть несколько видеороликов по этой теме:

Документация IntelliJ SDK отличная, но лучшей доступной документацией является исходный код из других плагинов, доступных для загрузки. Многие из проектов предоставляют ссылку на репо, где вы можете загрузить код и поэкспериментировать с ним.
https://plugins.jetbrains.com/idea

@OMAK
Теперь позвольте мне сказать вам, что вы, вероятно, не найдете то, что ищете, в документации или доступных плагинах.
Содержимое, которое я предоставил, ориентировано главным образом на IDEA IDE (на нем основана Android Studio), а документация, которую вы делаете, просто не существует. Нет руководства, в котором объясняется, как изменить мастер в студии android, добавив к нему шаги или импортируя шаблоны из нестандартных каталогов.
Решение, над которым вы работаете, очень похоже на то, что я разработал в компании, в которой я работаю. Сложно начать, но возможность разработки плагина предлагает бесконечные возможности для автоматизации нескольких частей рабочего процесса разработки.
Я могу написать краткое руководство о том, как это сделать в недалеком будущем, чтобы документировать, как его выполнить. На данный момент лучше всего начать работу самостоятельно, наблюдая за учебниками на YouTube.