打造更好用的 Android Studio:添加 Templates 以及改造 gradle-projects
对模板工程的改造有可能造成 Android Studio 更新失败!
最近我从 1.5 -> 1.5.1 更新失败,就是对模板工程的改造造成了冲突!
中午 @drakeet 秀了一波他改造的两个小模板,另外还发了几张官方自带模板的本地位置图片,我也跟着改造了一把。
添加自定义 Templates
自定义的位置入口在这儿:
然后,选择 Templates 按 + 就可以一步步操作啦。
Description 处有些很有用的说明,这里指出了多个占位符号,可以在根据模板类生成具体的类时替换成合适的字符。
- 静态内部类实现的单例。
|
|
- BaseAdapter,引入 provideItemLayout() 方法是为了解决 R 文件引入的包名问题,ViewHolder.bind(Object) 可以将 UI 和数据绑定放在一起。
|
|
- RecyclerView Adapter
|
|
改造 gradle-projects
在添加了几个自定义的 Templates 之后,我想能不能去改造一下整个 project,让它自动帮我们创建更多的文件、配置更多的内容。
我曾经想改造一下,但是没有 Google 到方法,然后我创建了一个工程,把必须要的依赖啊、包啊、类啊都配置好,想要以后再新建工程时直接 copy 一份然后修改包名就行了,后来我发现改包名太累,放弃了。
以下就是手术过程。
找到模板工程位置:
AndroidStudio\plugins\android\lib\templates\gradle-projects
这个下面有多个文件夹,一看名字就知道是干啥的。
###改造前请先备份!
##改造前请先备份!
#改造前请先备份!
先看 NewAndroidProject 有什么可以改造的没有
研究了一下这个目录下的文件,我发现最重要的是recipe.xml.ftl
这个文件,它描述了工程创建过程应该做些什么,copy 操作是简单的复制,instantiate 操作是实例化,AS 除了生成一些变量替换掉占位符,还会插入一些内容。globals.xml.ftl
则定义了一些常量。据此,我们可以修改的文件是
NewAndroidProject\root\project_ignore
和 NewAndroidProject\root\local.properties.ftl
,前者是整个工程的 ignore 文件,可以在 https://www.gitignore.io 生成一份拷贝进去,后者我们可以定义一些密码之类的(要确保该文件不会加入版本控制系统)。
接下来看看 NewAndroidModule 有什么可以改造的没有
根据前面的经验,先研究一下 recipe.xml.ftl
这个文件,有以下发现:
- 第 4 行的 dependency 定义 appcompat-v7
- 第 14 行实例化了 build.gradle
- 第 19 行创建了 drawable 文件夹
- 第 33 行拷贝了 module 的 ignore
- 第 37 行生成了 proguard 文件
- 第 55 行生成了 res/value/strings.xml
继续研究 NewAndroidModule\root
下的文件。
- build.gradle.ftl 是 module 的 build.gradle 模板,我想提前做点配置进去。我比较疑惑的是第 65 行的
<#if dependencyList?? >
,这里看起来是某个地方定义了一个依赖列表,但是并没有发现。回过头去看recipe.xml.ftl
,它的第 4 行是<dependency mavenUrl="com.android.support:appcompat-v7:${buildApi}.+"/>
,我猜测可能这就是定义的地方,于是在这后面仿写了一句<dependency mavenUrl="com.jakewharton:butterknife:7.0.1"/>
,创建工程验证确实如我所猜测的那样。 - module_ignore 最简单,根据我们的需要再添加一些语句就行
- proguard-rules.txt.ftl 会被实例化到 proguard-rules.pro,可以根据对
build.gradle.ftl
的修改适当修改
还可以继续改造的是:自动生成一些包,让程序架构更清晰,先把架子搭起来嘛。