Android Studio自定义项目模板,如何将两个或多个模块合并在一起?

12

@riggaroo 请帮我解决这个问题。 - OMAK
我认为你需要提供更多的细节,这样才能理解你做了什么,哪些地方出了问题以及所需的结果是什么。 - Pär Nils Amsen
默认情况下,在创建项目时将创建一个模块。如果您想添加更多的模块,则需要创建模块。 文件 -> 新建 -> 新建模块。 - Nilesh Patel
@PärNilsAmsen 请查看此链接 https://robusttechhouse.com/tutorial-how-to-create-custom-android-code-templates/ - OMAK
1个回答

13
这并不是一项简单的任务。
要理解您想要完成的任务背后的复杂性,您需要阅读Android Studio和/或IntelliJ Community Edition的源代码。
因此,我将概述几种可能的替代解决方案,并解释创建自己的Android项目模板相关的复杂性。
  • 第一种方法:创建一个包含两个模块的模板应用程序项目。
    这是最简单的方法。 您可以创建此项目作为其他项目的基础。 您可以将其置于版本控制下,并重新使用特定版本。 从Android Studio中,您可以使用以下方式导入:
    文件-> 新建-> 导入项目... 文件-> 新建-> 从版本控制创建项目

  • 第二种方法:修改NewAndroidProject模板和/或要使用的模块的模板。
    导航到以下路径: <your_androidstudio_installation_directory>/plugins/android/lib/templates/gradle-projects/NewAndroidProject

    这是用于大多数(或所有)Android项目的模板。

    相反,这是用于应用程序中使用的每个模块的模板,例如“app”模块,库模块和其他少数模块。 您可以自定义其中的文件,但它将影响您在Android Studio中创建的所有项目。 <your_androidstudio_installation_directory>/plugins/android/lib/templates/gradle-projects/NewAndroidModule

    修改这两个模板可能会或可能不会解决您的问题,我不会深入描述如何做到这一点, 因为您可能希望保持创建新项目的标准方式不变。

    当然,这第二种方法并没有回答您的问题,这就是为什么我向您介绍第三种方法。

  • 第三种方法:为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的工作方式是一个很好的见解,因为一旦您了解各个部分的连接方式,就可以更多地自动化您的工作流程,但在这种情况下,我建议使用第一种方法,因为它简单而有效。

  • TL;DR; 使用第一种方法。

    如果您在一个中大型团队中工作,则开发插件。(第三种方法)



    编辑:插件的第三种方法实现(开始插件开发):

    IntelliJ平台SDK文档: http://www.jetbrains.org/intellij/sdk/docs/index.html

    这是我与同事一起进行的Droidcon Italy 2017演讲的示例代码的github存储库: https://github.com/synesthesia-it/droidcon_as_plugin

    这是一个基本示例,您可以下载、编译、安装和实验。它做了一些简单的事情来演示基本概念。

    有一些关于这个主题的YouTube视频:

    IntelliJ SDK文档非常好,但最好的文档来源是其他可下载插件的源代码。许多项目提供一个链接到存储库的链接,您可以从中下载代码并进行实验。
    https://plugins.jetbrains.com/idea

    @OMAK
    现在让我告诉你,你可能无法在可用的文档或插件中找到你要寻找的内容。
    我提供的内容主要针对IDEA IDE(Android Studio基于它),而要做你想做的事情的文档根本不存在。没有指南可以解释如何通过添加步骤或从非标准目录导入模板来修改Android Studio中的向导。
    你正在处理的解决方案与我所在公司开发的解决方案非常相似。起步难度很大,但能够开发插件提供了自动化开发流程多个部分的无限可能性。
    我可能会在不久的将来撰写一份简短的指南,以记录如何完成此任务。但目前最好通过观看YouTube上的教程自己开始学习。


请提供第三种方法的链接。 - OMAK
@OMAK 我添加了一些有用的链接。如果需要指导和建议,请随时与我联系。 - codeWhisperer
@codeWhisperer:“……而且要做你想做的事情所需的文档根本不存在。”这个事实自2017年5月以来有改变吗?我正在使用第一种方法,但很想追求第三种方法。非常棒的文章。 - Andrious Solutions
@codeWhisperer 你指的是什么意思:创建一个已经包含两个模块的模板应用程序项目。 - Sumit Shukla
@SumitShukla 只需创建一个“基础”项目,您可以重复使用它,这是一个可以用于多个应用程序的框架,而无需每次从头开始。 - codeWhisperer
嘿,最后你写了一个关于如何完成所有这些的指南吗?谢谢。 - ilansas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接