Android Studio 模板小结
本文不是 Android Studio 模板入门/详解,而是自己的使用经验。
1 概述
- Android 官方并未提供自定义模板功能,现在的自定义模板均通过仿写默认模板完成
- Android Studio 模板采用 FreeMaker 语法编写,但仅 ftl(FreeMaker Template Language)文件支持 FreeMaker 语法
2 模板结构
OS X 系统下模板文件路径: /Applications/Android Studio.app/Contents/plugins/android/lib/templates
,以 activities
目录下的 EmptyActivity
模板为例,目录下共包含 5 项(实际上所有的模板都是由这 5 项组成的):
template.xml
: 模板 GUI 配置文件globals.xml.ftl
: 全局变量recipe.xml.ftl
: 模板生成规则执行文件root 文件夹
: 存放对应源码的 ftl 文件,以及资源文件template_blank_activity.png
: 效果缩略图
3 模板工作原理
3.1 全局变量
全局变量分类
template.xml
定义元素:通过parameter
标签定义的 id 元素,一般由用户通过 GUI 输入- Android Template 预定义元素:如
${applicationPackage}
globals.xml.ftl
中 global 标签声明的元素
全局变量作用范围
template.xml
定义元素:可以在template.xml
,globals.xml.ftl
,recipe.xml.ftl
及root 文件夹
下所有模板 ftl 文件中使用- Android Template 预定义元素:可以在
globals.xml.ftl
,recipe.xml.ftl
及root 文件夹
下所有模板 ftl 文件中使用 globals.xml.ftl
中 global 标签声明的元素:可以在globals.xml.ftl
,recipe.xml.ftl
及root 文件夹
下所有模板 ftl 文件中使用
3.2 局部变量
局部变量指 ftl 文件中通过 assign 标签声明的元素,作用范围仅在当前 ftl 文件中
3.3 语法
在整个模板系统中我们可以使用 Android Template
和 FreeMaker
两种语法,但其使用范围有所不同
- Android Template:可以在
template.xml
及其他所有 ftl 文件
中使用,语法规则参考 Android IDE Template Format - FreeMaker:仅在 ftl 文件中可以使用,特别注意
template.xml
文件中不可使用 FreeMaker 语法,语法规则参考 Apache FreeMarker Manual
3.4 模板文件生成过程
所有全局变量
及 模板文件
交由 recipe.xml.ftl
,依据 recipe.xml.ftl
所定义规则生成模板
4 参考
- 入门教程:Android Studio 自定义模板 写页面竟然可以如此轻松
- Android Template 语法:Android IDE Template Format
- FreeMaker 语法:Apache FreeMarker Manual