写在前面
在使用Android Studio的时候,为了提高效率,我们会使用一些插件来拓展IDE的使用。那么有时候因为一些功能插件没有提供,或是作者过久没维护导致失效,我们也可以尝试自己来开发一个插件,诸如Android Studio,PhpStorm之类的都是属于JetBrains,那么也就是说我们开发的一个插件是有可能在多个不同的编辑器里是通用的。
开发plugin用到的工具是Intelij IDEA 。
步骤
Created with Raphaël 2.1.2
开始
创建plugin工程
创建Action
编写逻辑代码
注册plugin.xml
打包发布
新建完成后,我们要关注的就是plugin.xml和用来写代码的src文件夹两个地方了。
2.介绍
2.1 plugin.xml
这个文件是一个注册文件,如果开发过Android的话,就类似于Android里的AndroidManifest.xml文件,包含一些注册信息。在Android里开发一个界面我们说新建个Activity,那在plugin这里是被称为Action,用来开发点击我们的插件后要执行的操作。
我们Activity写后会在AndroidManifest.xml里注册,那么这里的Action我们就要在plugin.xml里注册。所以你只要看下plugin.xml里的内容就很容易明白了。
<idea-plugin > <id > com.your.company.unique.plugin.idid > <name > Plugin display name herename > <version > 1.0version > <vendor email ="support@yourcompany.com" url ="http://www.yourcompany.com" > YourCompanyvendor > <description > Enter short description for your plugin here. most HTML tags may be used ]]> description > <change-notes > Add change notes here. most HTML tags may be used ]]> change-notes > <idea-version since-build ="173.0" /> <extensions defaultExtensionNs ="com.intellij" > extensions > <actions > actions >idea-plugin >
2. Action
前面说了,开发一个plugin主要的就是Action,这是我们的入口,在Action里写入我们的代码,实现我们想要的功能。
2.1 新建Action
在这里填写一些基础信息: Name 表示到时在菜单里显示的标题; Description 就写一些介绍的话; Groups 里表示你要让这个插件在菜单里出现的位置,在这里我们试下选择EditMenu,然后右边是first,也就是说这个插件将来会出现在Edit菜单下的第一个位置; Keyboard Shortcuts 表示可以定义一些快捷键;
新建完成后:
public class ClickAction extends AnAction { @Override public void actionPerformed (AnActionEvent e) { Messages.showErrorDialog("Error message" , "Error Title" ); } }
我们看下plugin.xml里的变化:
<actions > <action id ="Test.Test" class ="ClickAction" text ="MyIdeaPlugin" description ="This is my first plugin test" > <add-to-group group-id ="EditMenu" anchor ="first" /> action > actions >
2.2 运行Action
我们直接run,它将会打开一个新的装好我们这个插件的IDE窗口,然后我们就可以在Edit菜单看到我们定义的Action的入口了。点击会弹出我们刚才写的窗口。
注:我这里有个问题,我在开发过程中,点击这个action没有反应,反倒是使用了初始化时定义的快捷键才有用,我还不知道是什么问题。而且菜单里的其它选项也是,需要使用快捷键,而点击是无效的。但看其他人的文章没发现有这样的情况。
3. 发布插件
我们开发完后就可以将插件进行打包,生成一个jar包,然后我们可以安装到我们的Android Studio之类的IDE上了。 在Build下选择Prepare Plugin Module ‘名字’ For Deployment , IDE就会自动在项目目录下生成jar包了。
大致的流程就是这样。
其它
必备的知识
因为这里我们会涉及到对一些界面的操作,那就要学习下swing,用Jpanel,JButton之类的做一些简单的界面实现,这跟开发Android的流程是类似的;
遇到的问题
1. 兼容性
在写完一个插件并生成jar包后,我在Android Studio里安装的时候出现了不兼容的错误,导致无法安装,这里主要是版本的问题。虽然这些IDE都是JetBrains的,但它们之间存在着版本差异。 我们要修改的地方是plugin.xml里的
version since -build="173.0" />
那么要如何修改版本号到匹配我们想要的IDE呢?要在这里查看即可: http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html
所以我这里目前Android Studio的最新版本是1.3,那么我们就要改成141:
<idea-version since-build ="141" />
参考
AndroidStudio 插件开发(进阶篇之 Action 机制)
Quick Start Guide