原创文件,禁止未授权转载
AndroidStudio4.0之前,可以在template的文件夹里使用freemarker的自定义模板,可以在AndroidStudio的文件夹中,随意的添加适合自己的自定义模板,之前鸿洋大神的文章已经有来详细的介绍(https://blog.csdn.net/lmj623565791/article/details/51592043)。
但是从4.1版本开始提供新的方式,Geminio,用Kotlin的形式编写新的template,而且需要使用插件的形式,才能使用自定义的模板,摸索了好几天,终于解决了。
我的项目是使用MVVM的开发框架,每次在编写一个新的页面的时候,就需要新建四个文件Activity/Fragment, ViewModel, Repository, xml文件,写的多了就会很烦。自从使用了自定义的模板以后,头发掉得都少了。
开工!!!搞起!!!
#准备
开发工具 AndroidStudio4.1
模板基础代码配置
打开https://github.com/JetBrains/intellij-platform-plugin-template,点击绿色的#Use this template#,按步骤在自己的github上创建模板。
然后使用AndroidStudio 将模板下载到本地。
编码
添加wizard-template.jar
在根目录里添加lib文件夹,并添加AndroidStudio安装目录里的wizard-template.jar,位于 /Applications/Android\ Studio.app/Contents/plugins/android/lib/目录下。
修改build.gradle.kts
在dependencies里添加wizard-template.jar的依赖
1 | dependencies { |
修改gradle.properties
修改gradle.properties中的pluginGroup, pluginName_, platformPlugins, platformVersion。
1 | pluginGroup = com.bigaddemo.mvvm |
将默认的listeners的父包名,调整为自己想要的样子,例如com.company.app
修改MyProjectManagerListener
1 | internal class MyProjectManagerListener : ProjectManagerListener { |
在src/main/kotlin里创建other文件夹用于放置自定义模板
正式开始编写自定义模板,以Activity为例。
1. 实现WizardTemplateProvider
SamplePluginTemplateProviderImpl
1 | package other |
2. 创建 mvvmActivityTemplate.kt.
这个文件是设置在创建Activity的时候,输入的信息,例如ActivityName,layoutName,packageName以及是否可以为为等
mvvmActivityTemplate.kt
1 | package other.mvvm.activity |
3. 创建mvvmActivityRecipe.kt。
这个文件用于将创建的文件保存到文件夹中,例如Activity,布局文件等。原计划将Activity直接添加到AndroidManifest里,但是发现generateManifest有点问题,导致生成的插件不能使用,暂时去掉,只能手动添加了。
mvvmActivityRecipe.kt
1 | package other.mvvm.activity |
4. 创建mvvmAcitivityKt。
这个文件用于创建Activity的模板代码,根据自己的情况,自行调整。
mvvmAcitivityKt.kt
1 | package other.mvvm.activity.src.app_package |
5. 编写mvvmRepository。
这个文件是mvvm的repository层的代码。
mvvmRepository.kt
1 | package other.mvvm.activity.src.app_package |
6. 编写mvvmViewModel。这个是mvvm的viewmodel层
mvvmViewModel.kt
1 | package other.mvvm.activity.src.app_package |
7.编写mvvmActivityXml。这个文件是用于生成布局文件的
mvvmActivityXml.kt
1 | package other.mvvm.activity.res.layout |
8. 修改plugin.xml
添加org.jetbrains.android,org.jetbrains.kotlin,com.intellij.modules.java的依赖
修改applicationService和projectService的值
修改applicationListenersv中listener的值
添加wizardTemplateProvider为刚才添加的类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25<idea-plugin>
<id>com.bigaddemo.mvvm</id>
<name>bigaddemo_MVVM</name>
<vendor>bigademo</vendor>
<!-- Product and plugin compatibility requirements -->
<!-- https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html -->
<depends>org.jetbrains.android</depends>
<depends>org.jetbrains.kotlin</depends>
<depends>com.intellij.modules.java</depends>
<depends>com.intellij.modules.platform</depends>
<extensions defaultExtensionNs="com.intellij">
<applicationService serviceImplementation="com.bigaddemo.mvvm.services.MyApplicationService" />
<projectService serviceImplementation="com.bigaddemo.mvvm.services.MyProjectService" />
</extensions>
<applicationListeners>
<listener class="com.bigaddemo.mvvm.listeners.MyProjectManagerListener" topic="com.intellij.openapi.project.ProjectManagerListener" />
</applicationListeners>
<extensions defaultExtensionNs="com.android.tools.idea.wizard.template">
<wizardTemplateProvider implementation="other.SamplePluginTemplateProviderImpl" />
</extensions>
</idea-plugin>
生成jar文件
在AS最上面选择运行Run plugin,成功以后即可在build/libs找见对应的jar文件。最后在AS的设置里将这个jar包添加的plugin,重启AS即可。
u