一、需要在Intellij IDEA中新建一个plugin项目

 

二、其实是新建一个Action

这里有两种方式:

一种是新建一个java/kotlin类继承自AnAction。

第二种是新建一个PluginDev中的Action,他会帮你配制好下面的plugin.xml中的action配置。

 我这里选择的是第一种。

三、Action中实现插件功能

这里我们实现一个简单的插件,分别是 MyNotificationAction弹出一个弹窗,还有MyDialogAction弹出一个选择框,如下所示:

package com.example.plugin;

import com.intellij.notification.NotificationDisplayType;

import com.intellij.notification.NotificationGroup;

import com.intellij.notification.NotificationType;

import com.intellij.notification.impl.NotificationGroupEP;

import com.intellij.openapi.actionSystem.AnAction;

import com.intellij.openapi.actionSystem.AnActionEvent;

import com.intellij.openapi.actionSystem.PlatformDataKeys;

import com.intellij.openapi.project.Project;

import com.intellij.openapi.ui.Messages;

import org.jetbrains.annotations.NotNull;

public class MyNotificationAction extends AnAction {

/**

* 所有的用户事件,都会走到这里面

* @param anActionEvent

*/

@Override

public void actionPerformed(@NotNull AnActionEvent anActionEvent) {

Project project = anActionEvent.getData(PlatformDataKeys.PROJECT);

Messages.showMessageDialog(project,"Hello World!","这是弹窗",Messages.getInformationIcon());

}

}

package com.example.plugin;

import com.intellij.openapi.actionSystem.AnAction;

import com.intellij.openapi.actionSystem.AnActionEvent;

public class MyDialogAction extends AnAction {

@Override

public void actionPerformed(AnActionEvent e) {

MyDialog myDialog = new MyDialog();

myDialog.setVisible(true);

}

}

这里用到的Dialog组件,通过SwingUi —— createDialog生成,

可以通过拖动的方式编辑Dialog弹窗的内容,比如这里如下所示:

 

四、其次是需要配置

这里主要配置的是这两个地方:

        1、一个是plugin.xml,用于配置插件依赖关系,还有最终展示的位置入口等。

        2、另一个是build.gradle文件,用于配置最终插件之一的IDE版本,这里要注意,需要根据android studio中的版本来改配置,否则,可能出现不兼容的问题。

分别如下:

       1、plugin.xml

text="AndroidVille"

description="This is a plugin to generate a simple notification">

class="com.example.plugin.MyNotificationAction"

text="生成新类和构造方法"

description="Click to display notification"/>

description="这是一个action">

        这里标签中的text就是插件在IDE中展示的title,对应的类就是我们创建的MyNoticationAction,这里面实现了点击后的所有逻辑和功能。而我们的这个插件title在哪里展示呢?答案就是标签中的group-id,这里我们选择在GenerateGroup中加入我们的插件Action入口,anchor代表的是加入的位置是最后还是最前,我们这里是最后。这里对应的就是IDE中的Generate入口。

        2、build.gradle

其中的patchPluginXml中的sinceBuild代表支持的IDE最低版本,需要和你Android Studio中的版本对应,如果高于了Android Studio的版本,则后面安装编译出来的插件的时候,会提示你不兼容。

 

patchPluginXml {         sinceBuild.set("203")         untilBuild.set("222.*")     }

plugins {

id("java")

id("org.jetbrains.intellij") version "1.5.2"

}

group = "com.example"

version = "1.0-SNAPSHOT"

repositories {

mavenCentral()

}

// Configure Gradle IntelliJ Plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin

intellij {

version.set("2021.2")

type.set("IC") // Target IDE Platform

plugins.set(listOf(/* Plugin Dependencies */))

}

tasks {

// Set the JVM compatibility versions

withType {

sourceCompatibility = "11"

targetCompatibility = "11"

}

patchPluginXml {

sinceBuild.set("203")

untilBuild.set("222.*")

}

signPlugin {

certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))

privateKey.set(System.getenv("PRIVATE_KEY"))

password.set(System.getenv("PRIVATE_KEY_PASSWORD"))

}

publishPlugin {

token.set(System.getenv("PUBLISH_TOKEN"))

}

}

 

五、最后是编译发布jar

这个jar就是android studio可以使用plugin的版本,可以直接通过gradle中buildPlugin来编译出jar,然后在android studio中安装即可。

最终运行效果第二个Action为:

 

 

第一个Action

 

 

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: