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.ftlroot 文件夹 下所有模板 ftl 文件中使用
  • Android Template 预定义元素:可以在 globals.xml.ftl,recipe.xml.ftlroot 文件夹 下所有模板 ftl 文件中使用
  • globals.xml.ftl 中 global 标签声明的元素:可以在 globals.xml.ftl,recipe.xml.ftlroot 文件夹 下所有模板 ftl 文件中使用

3.2 局部变量

局部变量指 ftl 文件中通过 assign 标签声明的元素,作用范围仅在当前 ftl 文件中

3.3 语法

在整个模板系统中我们可以使用 Android TemplateFreeMaker 两种语法,但其使用范围有所不同

  • 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 参考