大幅提高Android開(kāi)發(fā)效率之TemplateBuilder
將Android Studio Template的開(kāi)發(fā)過(guò)程集成于Android Studio Plugin中,只需要一鍵將能將當(dāng)前文件制作為Template。
聲明
Android Studio的模板包括以下三種,這里講的是第三種Multi Template。在閱讀本文之前,默認(rèn)你是了解該模板的,知道為什么要使用它,如果不清楚它是什么,可以在網(wǎng)上自行查閱相關(guān)資料,當(dāng)然也可以直接點(diǎn)擊這里查看一下同行們對(duì)它的評(píng)價(jià)
- Live Template:代碼片段級(jí)別
- File Template:?jiǎn)挝募?jí)別
- Multi Template:多個(gè)文件級(jí)別(以下稱 Android Studio Template)
Android Studio Template
WHAT
TemplateBuilder是一款能夠幫助我們快速生成Android Studio Template的AS插件,將通過(guò)逐個(gè)文件去配置模板的方式改進(jìn)為通過(guò)插件來(lái)實(shí)現(xiàn),對(duì)于簡(jiǎn)單的模板制作,只需要一鍵即可生成。
HOW
安裝
打開(kāi)Android Studio,Preferences – Plugins – Brown Repositories, 搜索TemplateBuilder 并下載,下載之后重啟IDE即可使用。
使用
這里我們就拿對(duì)一個(gè)MVP模板的抽取來(lái)舉例,首先選中需要制作為模板的類文件(如果需要選中某個(gè)包下面的全部文件,可以直接選中該包),然后按下啟動(dòng)改插件的快捷鍵ALT + T,便能看到如下界面
下面來(lái)說(shuō)明一下該界面對(duì)應(yīng)的內(nèi)容。
整個(gè)的UI界面很明了,如果你只是想簡(jiǎn)單抽取你寫的這個(gè)模板,你只需要輸入下Template Name和Template Description即可,當(dāng)然如果你不想輸入的話這也可以省略掉。接下來(lái)直接點(diǎn)擊Finish,就能在IDE底部看到彈出如下圖所示的提示,此時(shí)你已經(jīng)制作成功,重啟IDE即可使用該模板。
到這里,如果你了解Android Studio Template制作流程的話,你可能覺(jué)得相對(duì)于完全自己手動(dòng)去做這樣固然簡(jiǎn)單,但是靈活性上降低了不少。例如模板中有組價(jià)依賴關(guān)系的時(shí)候,你需要在build.gradle.ftl中去添加對(duì)應(yīng)的依賴;導(dǎo)入模板之后你想自動(dòng)打開(kāi)某個(gè)文件時(shí),你需要編輯recipe.xml.ftl;選擇模板適用于哪個(gè)版本時(shí),你需要編輯template.xml等等。如果你有這方面的需求,可以點(diǎn)擊Next來(lái)代替Finish,點(diǎn)擊之后你就能看到如下界面,在這里提供了所有你需要關(guān)注的配置文件的編輯,編輯完成直接點(diǎn)擊OK開(kāi)始自動(dòng)生成。
WHY
如果你嘗試過(guò)自己去制作一個(gè)Android Studio Template的話,相信你一定會(huì)為模板配置、更改文件名、添加可配參數(shù)等等繁瑣的操作而煩惱,因?yàn)槟呐乱粋€(gè)很簡(jiǎn)單的模板抽取都需要把這一系列流程全都走一遍,更改好幾個(gè)配置文件。
說(shuō)下我的個(gè)人感受,當(dāng)我發(fā)現(xiàn)Android Studio Template時(shí)我頓時(shí)感覺(jué)有太多太多可以抽取出來(lái)的模板以供日后快速使用,但當(dāng)我剛開(kāi)始抽取幾個(gè)模板的時(shí)候就已經(jīng)被深深的惡心到了,因?yàn)檫@個(gè)過(guò)程真心很繁瑣。記得當(dāng)時(shí)還專門寫groovy腳本來(lái)輔助進(jìn)行這些模板的配置,但也還是需要向腳本里添加一些模板文件的入?yún)⑿畔?,依然很麻煩。后?lái)我決定將這個(gè)制作過(guò)程盡可能通過(guò)自動(dòng)化來(lái)完成,當(dāng)時(shí)考慮Gradle插件、Java GUI、AS Plugin等多種方式來(lái)完成模板制作,最終選擇了快而方便的AS Plugin,插件的名稱就是上面所提到的TemplateBuilder。