本篇文章将讲解如何通过 IntelliJ IDEA 工具来编写自定义插件,熟悉插件开发的流程,以及如何打包发布插件的流程。
打开 IntelliJ IDEA ,选择 File -> Project Structure,在弹出的配置窗口中点击 New... 新增SDK,然后选择 IntelliJ Platform Plugin SDK。如下图所示:
在弹出下面的对话框时,选择默认 IntelliJ IDEA 文件夹即可,然后点击OK,如下图所示:
最后会弹出选择插件的 Java 版本的窗口,选择默认配置即可,然后点击OK,如下图所示:
在打开的 IntelliJ IDEA 中选择 File -> New -> Project,在弹出的 New Project 窗口的左侧菜单选择 IntelliJ Platform Plugin 项目,Project SDK 选择刚才新建的配置,其中 Groovy、Scala等其他附加的内容无需勾选,然后选择 Next , 如下图所示:
输入项目名称和选择项目存放位置即可,点击 Finish 完成创建,如下图所示:
创建完插件项目之后,会默认生成一个 plugin.xml 的配置文件,其中可以修改该插件项目的相关配置信息,比如插件名称、插件版本号等,代码如下所示:
com.your.company.unique.plugin.id
Plugin display name here
1.0
YourCompany
most HTML tags may be used
]]>
most HTML tags may be used
]]>
各个标签的具体含义如下:
1.
2.
3.
4.
5.
6.
7.
8.
9.
plugin.xml 中填写的配置信息,会在别人在插件库中搜索你的插件的时候展现出来。
项目创建好时有一个 src 文件夹,在这个文件夹下写插件的主要代码,主要有以下几种针对插件的特殊文件类型:
GUI Form:表单界面。
Dialog:对话框。
XXXComponent:作用域,其中有分为 Application、Project、Module 分别作用于不同的范围。
Action:处理插件交互行为。
其中最主要的是 Action 类,当我们使用 Android Studio 生成类的 getter 和 setter 方法是也是使用的插件,而生成 getter 和 setter 方法的功能是在菜单栏中的 Code -> Generate -> Getter and Setter选择的。
那么我们自己创建的插件选项在哪里呢?属于哪个菜单呢?
这里在创建 Action 类的时候就可以指定操作入口,Action 的创建的对话框如下图所示:
然后在弹出的 New Action 界面配置 Action 相关的信息,如下图所示:
1. Action ID: 动作 ID,推荐用“插件名.XXAction”的格式。
2. Class Name:编写 Action 的类文件名。
3. Name:动作在菜单选项中展示的名字。
4. Description:Action 描述。
5. Groups:定义这个动作选项所属的组,比如 EditMenu 就对应 IDE 菜单栏上的 Edit,CodeMenu 就对应菜单栏上的 Code 。
6. Actions:是当前选中 Groups 下已有的 Action 动作,比如上图示如果我们选择 CodeMenu 就会展示 Code 中已有的几个选项 。
7. Anchor:用来指定动作选项在 Groups 中的位置,Frist 就是最上面、Last 是最下面,也可以设在某个选项的上/下方。
8. Keyboard Shortcuts:调用插件Action的快捷键,可以不填,要注意热键冲突。
创建好 Action 后,会自动在 plugin.xml 配置文件的 actions 标签中新增一个对应的 Action 动作信息,代码如下所示:
注意:
这里的信息我们都可以再次修改,但是 class name 修改时要注意和类文件名匹配。
同一个 group 下多个 action 的 id 不能重复。
创建好的 Action 类会默认继承抽象类 AnAction,然后实现 actionPerformed 抽象方法,在方法中添加如下代码,让点击这个 Action 的时候弹出一个输入框,代码如下所示:
public class DatabaseGeneratorAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
Project project = e.getData(PlatformDataKeys.PROJECT);
String text = Messages.showInputDialog(project,
"Please enter the user name.",
"Title",
Messages.getQuestionIcon());
Messages.showMessageDialog(project,
"What you have entered is:" + text,
"Information",
Messages.getInformationIcon());
}
}
写好代码后,run 运行项目,此时会自动启动一个新的 IntelliJ IDEA 项目,新运行起来的 IntelliJ IDEA 中就可以看到菜单栏里的 Code 最底部就出现了一个 Database Generator 选项,如下图所示:
点击 " Database Generator" 就会触发我们编写的功能,如下图所示:
为了更加方法的找到插件我们插件的入口,也可以在根目录上新建一个和 Code、Edit 等同级别的 Group ,需要在配置文件里新建一个group,然后
这个时候再 run 插件就会发现它单独建立了一个 group,如下图所示:
但是不建议这样使用,因为如果每一个插件都添加一个 group 在主菜单栏的话,那么主菜单栏就会非常杂乱,所以还是隐藏在二级菜单中比较好一点。
在 IntelliJ IDEA 顶部主菜单中选择 build -> Prepare Plugin Module "xxx" For Deployment 即可,如下图所示:
当提示完成后,会在项目根目录下生成一个 XXX.jar 的包,如下图所示:
这个 jar 包就可以提供给别人使用了。
IntelliJ 的插件也有一个市场,是官方提供的,可以在平台上发布自己的插件,地址:https://plugins.jetbrains.com/,如果没有账号的请先注册账号,发布插件如下图所示:
上传成功将会出现如下页面。
发布插件需要两个工作日审核时间。
说明: 在打包的时候 plugin.xml 中的内容不能有默认值,而且必须要有
com.lx.plugin.database
Database Generator
1.0
lx
auto generator db code
initial version 1.0
com.intellij.modules.lang
打开 Android Studio 开始安装插件,安装插件入口为 File -> Settings -> Plugins 有两种方式:
1. 从本地安装插件
这种需要用到插件项目生成的 jar 包,选择 Installed 选项旁边的设置小图标,点击之后在选择 Install plugin from disk ,然后找到jar文件选中OK即可。
2. 从插件市场安装
弹出对话框中选 Marketplace ,搜索你自己发布的插件,然后安装即可。
这里由于我刚刚发布的插件还没有通过审核,所以搜索不出来。
说明:由于插件内容过于简单,有可能通不过审核,所以这里就不在继续跟踪审核结果了。这里重点是将插件开发与打包发布流程描述清楚。
验证结果
我们在 Android Studio 中成功安装好插件之后,在 Code 菜单栏下面成功显示了 Database Generator 了。如下图所示:
点击 ”Database Generator“ 之后弹出如下页面:
输入内容之后点击 "OK",弹出如下结果页面:
到此,说明插件正常在 Android Studio 中使用。