战争即和平
自由即奴役
无知即力量
——《1984》
前言
由于现在的项目开发多数采用 mvc , mvp 等带有结构性的架构进行开发。所以必不可少的要进行模板文件的编写,费时费力。故采用 AndroidStudio 的 TemplateBuilder 插件完成模板代码的自动生成。
最终效果:一键生成一套模板文件
----->
正文
一、准备
安装 TemplateBuilder 插件
Preference - > Plugins -> 搜索 TemplateBuilder
安装后重启 AS
二、实践
实现一个同时生成 Activity 和 Layout 文件的模板
1. 正常创建一个 Activity ,开始编写模板
TemplateActivity.java
package ${packageName};
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class ${ActivityName}Activity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_${LayoutName});
}
}
- packageName 对应你点击新建的目录。如果其中还有层级,可以写成 ${packageName}.view
- 使用 ${} 声明的是动态传入的参数
activity_template.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
现在的目录结构
2. 生成模板
同时选中两个文件
按 ALT + T ,弹出模板信息编辑框
填写模板信息
add 添加模板参数,就是上文说的 ${ActivityName} ${LayoutName}
具体内容说明
- Template Category 对应模板的分类,对应选择导入模板时的模板分类,比如AS原本就有的Activity分类(我们经常在这个分类里面使用EmptyActivity),这里默认值是电脑的用户名。
- Template Name 对应模板名称,对应选择导入模板时的模板名称,默认值是当前的Module名称。
- Template Description 对应模板描述信息,对应导入模板时弹出的导入界面的文字描述,默认为空。
- Template Folder 对应生成模板所存放的位置,如果是Mac操作系统则默认为/Applications/Android Studio.app/Contents/plugins/android/lib/templates, Windows系统的话由于差异比较大,就默认为空了,可以自行配置[Android Studio安装目录]/plugins/android/lib/templates(这里只需要配置一次即可,插件将自动保存该位置)。(最好要能找到该目录,后期更改模板方便)
- Input data区域
关于Input data的使用,先解释下每个属性对应的含义
- id 变量名,必须和模板中使用的变量名对应,必填,比如上面模板文件中使用${testName},这里就应该填上对应的名称,testName
- name 变量简介,必填
- type 变量类型,string和boolean两种,通过下拉框选择,必填
- default 变量对应的默认值,选填
- help 添加该变量时的提示信息,选填
注意:不要使用中文,因为编码问题所以使用中文会变成乱码
点击 next ,进入更详细的配置
- recipe.xml.ftl
- <merge>标签那行作用是将定义的 AndroidManifest.xml.ftl 文件转化为 manifest.xml后与项目中的 AndroidManifest.xml 文件合并,完成了 Activity 在 AndroidManifest.xml 文件中注册的工作
- instantiate 标签是 recipe.xml.ftl 文件的核心标签,它的作用是将 from 属性的 ftl 文件转化为 to 属性的文件。
- open 文件会打开对应的文件
修改生成的文件名
- AndroidManifest.xml.ftl
因为是 merge 操作,我们就添加注册 Activity 行
点击 ok ,底部弹出如下。重启 AS 后生效
其他配置
template.xml,是控制创建时候的ui面板配置的,像在上一步中填写的,名称,默认值,类型等最终都是生成在这个文件中,当某项配置出错时,可以根据需要做调整,不用每次都Alt+T新建模板。
build.gradle.ftl,是添加依赖使用的,我们没有用到,所以不需要配置。
globals.xml.ftl,是全局一些配置,比如resOut是指定资源输出文件夹。默认就ok了
效果
一键添加完成,可自行扩展匹配自己项目的模板,如文章开头效果
三、总结
使用 AndroidStudio 编写自定义模板需要这几步:
- AS 安装 TemplateBuilder 插件
- 新建模板文件
- 重启 AS
使用模板的好处:
- 省时省力
- 代码结构规范化
- 很舒服
四、坑 及 小技巧
- ${packageName} 不要写成大写的 P
- 想要修改模板文件不需要每次都去 ALT + T ,可以找到自己的模板文件目录,mac 的默认目录可以通过
content -> plugins -> android -> lib -> templates 里面找到
root 文件就是我们编写 activity 等模板文件位置,直接修改,记得重启 AS
- 如果你不幸没有成功,可以点击 IDE 右下角弹出的 error ,很容易定位到问题