【Android】AndroidStudio 轻松完成自定义文件模板编写

战争即和平

自由即奴役

无知即力量

                             ——《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 编写自定义模板需要这几步:

  1. AS 安装 TemplateBuilder 插件
  2. 新建模板文件
  3. 重启 AS

使用模板的好处:

  • 省时省力
  • 代码结构规范化
  • 很舒服

四、坑 及 小技巧

  • ${packageName} 不要写成大写的 P 
  • 想要修改模板文件不需要每次都去 ALT + T ,可以找到自己的模板文件目录,mac 的默认目录可以通过 

content -> plugins -> android -> lib -> templates 里面找到

root 文件就是我们编写 activity 等模板文件位置,直接修改,记得重启 AS

  • 如果你不幸没有成功,可以点击 IDE 右下角弹出的 error ,很容易定位到问题

参考

Android Studio轻松构建自定义模板的步骤记录

提高开发效率-使用Android Studio Template快速生成模板文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章