【问题标题】:Android studio custom project template with two or more Modules togetherAndroid Studio 自定义项目模板,两个或多个 Modules 在一起
【发布时间】:2017-09-26 08:14:05
【问题描述】:

我正在尝试使用 Free Marker 创建一个包含域和数据模块的 Android Studio 自定义项目模板。但是我无法在创建新项目时创建新模块。请帮我解决这个问题

编辑: 我正在使用这个博客来创建自定义模板 https://robusttechhouse.com/tutorial-how-to-create-custom-android-code-templates/ 但它只会生成一个应用模块

【问题讨论】:

  • @riggaroo 请帮帮我
  • 我认为您需要提供更多详细信息,很难理解您做了什么,什么不起作用以及所需的结果是什么。
  • 在创建项目时默认创建一个模块。如果要添加更多模块,则需要创建模块。文件 -> 新建 -> 新模块。
  • @PärNilsAmsen 请检查此链接robusttechhouse.com/…

标签: android android-studio templates freemarker


【解决方案1】:

这绝非易事。

了解您想要完成的任务背后的复杂性 必须通读 Android Studio 和/或 IntelliJ 社区版的源代码。

所以我将概述一些可能的替代解决方案来解决您的问题,然后我会解释 一些与创建自己的 Android 项目模板相关的复杂性。

  • 第一种方法:创建一个已经有两个模块的模板应用项目。
    这是最简单的方法。 您可以创建此项目作为其他项目的基础。 您可以将其置于版本控制之下并重新使用它的特定版本。 在 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 项目的模板。

    这个模板是用于您在应用程序中使用的每个模块的模板,例如“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 我添加了一些有用的链接。请随时与我联系以获取指导和建议。
  • @codeWhisperer “......而且你想要做的事情的文档根本不存在。”自 2017 年 5 月以来,这一事实是否发生了变化?我正在使用第一种方法,但很想追求第三种方法。很棒的帖子。
  • @codeWhisperer 这是什么意思:创建一个已经有两个模块的模板应用项目
  • @SumitShukla 只需创建一个可以重复使用的“基础”项目,一个可以用于多个应用程序的框架,而无需每次都从头开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 2021-12-30
相关资源
最近更新 更多