一、需求分析:
目的为了不写重复的代码,整个MVP模式下的建包,建类过程十分繁琐,模版代码又十分固定,变化的部分的只有几个单词而已,这些代码毫无技术含量,所以就想着写个插件自动生成,变化的部分(如:类名关键字,请求的接口名等等)就用配置文件的方式导入(json格式,规则自定),以后这里还可以改进为变化的单词用表单的形式手动填写,因为目前对IntelliJ IDEA的GUI部分掌握不足,所以暂时没实现该功能。
二、插件展示:

github:https://github.com/liujia95/android-intellij-plugin-generate-mvp-code
三、开发过程:
开发工具:IntelliJ IDEA。
步骤一:新建项目。
1、File->New Project,然后按照下图操作。
2、点击next。
3、填写项目路径后点击finish即可。

步骤二:了解项目结构。
新建项目后的项目结构如下:

1、plugin.xml:项目的配置说明文件,相当于Android项目中的AndroidManifest.xml,负责一些Action、Extension等等已经项目版本信息、作者的注册和声明。
2、res:就是实现插件的关键代码。
<idea-plugin version="2">
<id>com.your.company.unique.plugin.id</id><!--插件ID,自定义,如果要上传到Plugins仓库不能有重复ID -->
<name>Plugin display name here</name><!--插件名称-->
<version>1.0</version>
<vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor><!--邮箱和网址,上传到Plugins仓库会在你的插件界面显示 -->
<!-- 你的插件的简介,同样是显示在Plugins仓库信息界面 -->
<description><![CDATA[
Enter short description for your plugin here.<br>
<em>most HTML tags may be used</em>
]]></description>
<!-- 版本更新信息-->
<change-notes><![CDATA[
Add change notes here.<br>
<em>most HTML tags may be used</em>
]]>
</change-notes>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
<idea-version since-build="141.0"/>
<!--产品选择,后文会提 -->
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<!-- uncomment to enable plugin in all products
<depends>com.intellij.modules.lang</depends>
-->
<!--扩展组件注册 要是用到applicationConfigurable即项目配置等就在这里注册-->
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
</extensions>
<!--Action注册,比如在某个菜单下增加一个按钮就要在这注册 -->
<actions>
<!-- Add your actions here -->
</actions>
</idea-plugin>
步骤三:编写一个菜单选项(创建一个Action)。
1、新建包:右键点击res,New——> package。
2、在包下面:New——>Action。
3、填写配置信息。

4、点击OK后会自动生成一个TestAction.Java的类:
public class TestAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
// TODO: insert action logic here
//点击菜单Edit的test后会跳进这个方法
}
}
4、可以看到在plugin.xml的actions元素下多了刚才选择和配置的内容。
<actions>
<!-- Add your actions here -->
<action id="Test.ID" class="TestAction" text="test" description="test test ">
<add-to-group group-id="MainMenu" anchor="first"/>
<keyboard-shortcut keymap="$default" first-keystroke="alt T"/>
</action>
</actions>
步骤四:写核心代码:
内容比较多,这一步骤待写。
步骤五:插件打包到本地并安装插件:
1、Build——>Prepare Plugin Module 'XXX' For Deployment生成一个.jar包。
2、打开Android Studio。
3、Preferences -> Plugins -> Install plugin from disk找到.jar包的位置。
注:
整套模版只适用于该项目的架构体系。
网友评论