Android Studio插件开发指南

一、需要在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

<actions>
        <group id="MyCustomPlugin.TopMenu"
               text="AndroidVille"
               description="This is a plugin to generate a simple notification">

            <add-to-group group-id="GenerateGroup" anchor="last"/>

            <action id="MyCustomAction"
                    class="com.example.plugin.MyNotificationAction"
                    text="生成新类和构造方法"
                    description="Click to display notification"/>
        </group>
        <action id="com.gpc.test" class="com.example.plugin.MyDialogAction" text="测试弹窗"
                description="这是一个action">
            <add-to-group group-id="HelpMenu" anchor="first"/>
        </action>
    </actions>

        这里<action>标签中的text就是插件在IDE中展示的title,对应的类就是我们创建的MyNoticationAction,这里面实现了点击后的所有逻辑和功能。而我们的这个插件title在哪里展示呢?答案就是<add-to-group>标签中的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<JavaCompile> {
        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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值