效果图
一、配置SDK
插件只能使用IDEA开发,IDEA下载地址:https://www.jetbrains.com/idea/
打开IDEA,选择 File → Project Structure ,在弹出窗口中选择 New → IntelliJ Platform Plugin SDK ,然后点击 OK即可
二、开发插件
1.新建Plugin项目
点击 File → New → Project → IntelliJ Platform Plugin → Next → 输入项目名 → Finish
建好之后会生成一个默认的 plugin.xml 文件,默认代码如下:
<idea-plugin>
<id>com.your.company.unique.plugin.id</id>
<name>Plugin display name here</name>
<version>1.0</version>
<vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>
<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="173.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>
-->
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
</extensions>
<actions>
<!-- Add your actions here -->
</actions>
</idea-plugin>
2.修改配置
修改配置示例如下,各字段的含义见注释:
<idea-plugin>
<id>com.your.company.unique.plugin.id</id>
<!--插件名-->
<name>MyFirstDemo</name>
<version>1.0</version>
<!--开发者信息:邮箱、网站、名称-->
<vendor email="838378694@qq.com" url="https://github.com/wkxjc">Cassin</vendor>
<!--插件描述,可以使用html语法-->
<description><![CDATA[
Study IDEA Plugin<br>
It's just for fun. But it has to ask for <em>40</em> characters.
]]></description>
<!--版本变更日志-->
<change-notes><![CDATA[
First Version<br>
It's just for fun. But it has to ask for <em>40</em> characters.
]]>
</change-notes>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
<idea-version since-build="173.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>
-->
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
</extensions>
<actions>
<!-- Add your actions here -->
</actions>
</idea-plugin>
3.新建Action
注意:必须将类全部放在文件夹下,不能直接放在src目录中,否则打包后运行会报这个错:
java.lang.NullPointerException
at com.android.tools.idea.diagnostics.AndroidStudioSystemHealthMonitor.getActionName(AndroidStudioSystemHealthMonitor.java:744)
at com.android.tools.idea.diagnostics.AndroidStudioSystemHealthMonitor.countActionInvocation(AndroidStudioSystemHealthMonitor.java:630)
at com.android.tools.idea.diagnostics.AndroidStudioSystemHealthMonitor$3.countActionInvocation(AndroidStudioSystemHealthMonitor.java:353)
at com.intellij.ide.AndroidStudioSystemHealthMonitorAdapter.countActionInvocation(AndroidStudioSystemHealthMonitorAdapter.java:29)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.fireBeforeActionPerformed(ActionManagerImpl.java:1196)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:302)
...
在src下新建一个文件夹,例如com.study.demo。在文件夹下新建一个Action:将光标定位到文件夹上 → File → New → Plugin DevKit → Action
输入Action信息,例如:
需要注意的是,Groups代表该插件安装后显示在哪里。我们选择CodeMenu,代表Code菜单栏下,Anchor表示在Code菜单栏下的第一个位置还是最后一个位置,我们选择Last。
点击 OK 后会自动生成这个我们自定义的MainAction类,同时在plugin.xml中会自动生成以下<action>标签:
<actions>
<action id="MainAction.ID" class="com.study.demo.MainAction" text="MyPlugin"
description="This is a demo for study IDEA Plugin.">
<add-to-group group-id="CodeMenu" anchor="last" />
</action>
</actions>
当然,我们也可以不使用 Plugin DevKit 快捷方式,改为自己手动创建Action类,并添加类似的<action>标签,效果一样。
4.编写逻辑
修改MainAction代码如下:
public class MainAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
Project project = e.getData(PlatformDataKeys.PROJECT);
String text = Messages.showInputDialog(project,
"What do you want to listen?",
"I will say it to you",
Messages.getQuestionIcon());
Messages.showMessageDialog(project,
text,
"Greeting",
Messages.getInformationIcon());
}
}
一个简单的输入弹窗,和一个消息提示弹窗。
5.打包成jar
点击 Build → Prepare Plugin Module ‘IDEAPluginDemo’ For Deployment
打包完成后生成的jar文件在这里:
同时可以看到Log控制台输出相应的日志。
三、安装插件
打开Android Studio,点击Android Studio → Preferences → Plugins → Install plugin from disk… → 选择刚刚生成的jar包 → Apply → OK → 重启Android Studio
这样就完成了文章开头的效果图。
参考文章
官方文档:http://www.jetbrains.org/intellij/sdk/docs/welcome.html
Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件:https://juejin.im/post/599f7f546fb9a0248c2de496