如何在Android Studio中创建自定义模块模板?
如何在Android Studio中自定义模块模板
自定义模块模板是完全可行的,以下是具体实现步骤:
1. 定位默认模块模板路径
Android Studio的内置模块模板存放在以下位置:
- Windows:
C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle-projects - Mac:
/Applications/Android Studio.app/Contents/plugins/android/lib/templates/gradle-projects - Linux:
~/AndroidStudio<版本>/plugins/android/lib/templates/gradle-projects
该目录下的AndroidApplication、AndroidLibrary等文件夹,就是Studio自带的模块模板。
2. 复制现有模板作为基础
不要直接修改内置模板(避免Studio更新时被覆盖),复制一个现有模板(比如AndroidLibrary),重命名为你需要的模板名称,例如CustomFeatureModule。
3. 修改模板核心配置
进入自定义模板文件夹,修改template.xml文件,调整模板的显示信息和参数:
<template> <name>Custom Feature Module</name> <!-- 模板显示名称 --> <description>预定义结构的自定义业务模块</description> <!-- 模板描述 --> <category>Android</category> <!-- 归类到Android模块列表 --> <formFactor value="Mobile" /> <minSdk value="21" /> <!-- 默认最低SDK版本 --> <!-- 可添加更多用户输入参数,比如是否生成DI层、是否包含测试代码等 --> </template>
同时可以修改globals.xml.ftl,定义全局变量(如包名、模块名的占位符),这些变量会在生成模块时自动替换为用户输入的值。
4. 自定义文件夹与文件结构
在模板的root目录下,按照你需要的模块结构创建文件夹和预设文件:
- 示例结构:
root/ └── src/ └── main/ ├── java/ │ └── ${packageName}/ │ ├── ui/ │ ├── viewmodel/ │ ├── repository/ │ └── di/ └── res/ ├── layout/ └── values/ - 预设文件示例(如
MainViewModel.kt):
注意使用package ${packageName}.viewmodel import androidx.lifecycle.ViewModel class MainViewModel : ViewModel() { // 预设的基础代码逻辑 }${packageName}、${moduleName}这类Freemarker占位符,生成时会替换为用户输入的实际值。
5. 配置生成逻辑(可选)
如果需要复杂的生成规则(如根据用户选择生成不同文件),可以修改recipe.xml.ftl,定义生成步骤:
<!-- 创建DI目录 --> <mkdir path="${escapeXmlAttribute(projectOut)}/src/main/java/${packageName}/di" /> <!-- 复制预设的DI模块文件 --> <copy from="root/src/main/java/${packageName}/di/Module.kt.ftl" to="${escapeXmlAttribute(projectOut)}/src/main/java/${packageName}/di/Module.kt" />
6. 重启Android Studio
修改完成后重启Studio,在「New Module」界面就能看到你的自定义模板,选择它即可生成预设结构的模块。
注意事项
- 为避免Studio更新覆盖自定义模板,建议将模板放在用户目录下的模板文件夹:
- Windows:
C:\Users\<用户名>\.AndroidStudio<版本>\config\templates\gradle-projects - Mac:
~/Library/Application Support/Google/AndroidStudio<版本>/templates/gradle-projects
- Windows:
- 可以学习基础的Freemarker语法,实现更灵活的条件生成、变量替换逻辑。
内容的提问来源于stack exchange,提问作者V.Rashkov
相关产品推荐
相关产品推荐

