自己动手写一个Android,Studio插件开发

2020-03-02 16:21 来源:未知

目的为了不写重复的代码,整个MVP模式下的建包,建类过程十分繁琐,模版代码又十分固定,变化的部分的只有几个单词而已,这些代码毫无技术含量,所以就想着写个插件自动生成,变化的部分(如:类名关键字,请求的接口名等等)就用配置文件的方式导入(json格式,规则自定),以后这里还可以改进为变化的单词用表单的形式手动填写,因为目前对IntelliJ IDEA的GUI部分掌握不足,所以暂时没实现该功能。

相信大家都有用过AndroidStudio的插件

1.介绍

官方文档

在使用Android Studio开发的时候,大部分人都会使用一些插件来提高开发效率,比如:

  • ButterKnife 自动生成注解代码

  • PermissionsDispatcher 更方便的进行Android 6.0权限处理

像这样的插件还有很多很多,但我们不能一直停留在用的程度,这样太不符合程序猿的风格了,今天就让我们自己动手来写一个插件,当以后自己有好的想法的时候,也能写一个出色的插件给大家使用。

想到以前写系统原生dialog的时候还要写一大串代码,简直太麻烦,今天就用这个做例子,写一个插件来实现一键生成dialog代码。

注:本文只是为了熟悉Android Studio插件开发,所以用一个比较简单的例子来演示。

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003
本文出自【赵彦军的博客】

二、插件展示:

美高梅网投平台 1使用效果.gif。github:

开发工具:IntelliJ IDEA。

1、File->New Project,然后按照下图操作。2、点击next。3、填写项目路径后点击finish即可。

美高梅网投平台 2新建项目.png

新建项目后的项目结构如下:

美高梅网投平台 3项目结构.png

1、plugin.xml:项目的配置说明文件,相当于Android项目中的AndroidManifest.xml,负责一些Action、Extension等等已经项目版本信息、作者的注册和声明。2、res:就是实现插件的关键代码。

<idea-plugin version="2"> <id>com.your.company.unique.plugin.id</id><!--插件ID,自定义,如果要上传到Plugins仓库不能有重复ID --> <name>Plugin display name here</name><!--插件名称--> <version>1.0</version> <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor><!--邮箱和网址,上传到Plugins仓库会在你的插件界面显示 --> <!-- 你的插件的简介,同样是显示在Plugins仓库信息界面 --> <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="141.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> --><!--扩展组件注册 要是用到applicationConfigurable即项目配置等就在这里注册--><extensions defaultExtensionNs="com.intellij"><!-- Add your extensions here --></extensions><!--Action注册,比如在某个菜单下增加一个按钮就要在这注册 --> <actions> <!-- Add your actions here --> </actions></idea-plugin>

1、新建包:右键点击res,New——> package。2、在包下面:New——>Action。3、填写配置信息。

美高梅网投平台 4Action配置说明.png

4、点击OK后会自动生成一个TestAction.Java的类:

public class TestAction extends AnAction { @Override public void actionPerformed(AnActionEvent e) { // TODO: insert action logic here //点击菜单Edit的test后会跳进这个方法 }}

4、可以看到在plugin.xml的actions元素下多了刚才选择和配置的内容。

<actions> <!-- Add your actions here --> <action text="test" description="test test "> <add-to-group group- anchor="first"/> <keyboard-shortcut keymap="$default" first-keystroke="alt T"/> </action></actions>

内容比较多,这一步骤待写。

1、Build——>Prepare Plugin Module 'XXX' For Deployment生成一个.jar包。2、打开Android Studio。3、Preferences -> Plugins -> Install plugin from disk找到.jar包的位置。

比如ButterKnife可以自动生成插件

2.环境搭建

首先需要安装IntelliJ IDEA 戳这里下载

安装完成后,运行起来是这个样子的:

美高梅网投平台 5

IntelliJ IDEA

点击Create New Project新建一个Plugin项目,填写项目名称,选择位置就可以点击finish了。

美高梅网投平台 6

New Project

项目结构如下图所示:

美高梅网投平台 7

项目结构

src目录下建包,和平时使用Android Studio的方式是一样的。
到这里,环境就搭建成功了(^-^)V

一:概述

相信大家在使用Android Studio的时候,或多或少的会使用一些插件,适当的配合插件可以帮助我们提升一定的开发效率,更加快乐。例如:

https://github.com/zzz40500/GsonFormat 可以帮助我们从Gson转化为实体类
https://github.com/avast/android-butterknife-zelezny 可以帮助我们更加方便的使用butterknife
https://github.com/Skykai521/ECTranslation 可以帮助在IDE里面完成英文->中文的翻译

其他更多好用的插件详见 Android Studio 常见插件收藏

有句话叫做授人以鱼不如授人以渔,不能一直跟随着别人的脚步去使用插件了,有必要去学习编写插件,当自己有好的创意的时候,就可以自己实现了。今天的内容就是:自己编写一个Android Studio插件。

注:

整套模版只适用于该项目的架构体系。

现在就教大家如何自己动手来写一个插件;

美高梅网投平台,3.编写插件

二:前期准备

在正式动工之前,我们需要做一些准备工作,否则后面的内容难以展开。

1、 安装 jdk ,配置环境变量。安装过程这里不细说,直接搜索即可。

2、 你需要了解 groovy 的相关知识,包括 groovy 环境搭建,groovy 开发工具了解,groovy 语法了解,这些不在这里细说,具体的知识点可以参考我的博客 Groovy 使用完全解析

首先需要安装IntelliJ IDEA,这个百度一大把,就不介绍了

新建Action

在新建的包下建一个Action类

美高梅网投平台 8

New Action

然后填写一些信息

美高梅网投平台 9

填写信息

  • ActionID:Action唯一的ID,一般的格式为:pluginName.ID
  • ClassName:类名
  • Name:插件最终显示在菜单上的名称
  • Description:对这个Action的描述信息

然后往下,选择插件在菜单中的位置,这里选择的是Code菜单下第一的位置,然后定义一个快捷键。

点击OK,就创建了一个Action类了,

public class CreateDialogAction extends BaseGenerateAction {

    public CreateDialogAction() {
        super(null);
    }

    public CreateDialogAction(CodeInsightActionHandler handler) {
        super(handler);
    }

    @Override
    public void actionPerformed(AnActionEvent e) {

    }
}

注意把继承的AnAction改成BaseGenerateAction,下文需要用到BaseGenerateAction类中的相关方法。

三:Android Studio Plugin 开发工具

开发工具我们选择用 IntelliJ IDEA

下载地址: https://www.jetbrains.com/idea/

在官网中 IntelliJ IDEA 有两个版本 Ultimate 、Community。Ultimate 是收费版,Community 是免费版。对于收费版有经济能力的可以考虑,但是我们的插件开发用免费版 Community 就可以了。

IntelliJ IDEA 的安装过程,这里不细说。

然后新建一个Plugin项目

美高梅网投平台 10

New Project

创建好后的页面

美高梅网投平台 11

项目结构

在src文件夹下新建一个Action类

美高梅网投平台 12

New Action

填写项目的一些信息

美高梅网投平台 13

填写信息

1:

ActionID:Action的唯一ID,一般格式为:pluginName.ID;
ClassName:类名;
Name:插件最终显示在AndroidStudio的名字;
Description:插件描述信息;
2:

groups:显示在哪个查单目录下,比如Android的code菜单

美高梅网投平台 14

插件最后会出现在code菜单下,和你选择的group有关

3:
Keyboard Shortcuts:插件的快捷键
4:
Anchor:插件在code菜单下的位置

代码实现

主要实现在类中自动生成代码,首先获取相关的操作类,已在代码中加入注释说明。

public class CreateDialogAction extends BaseGenerateAction {

    public CreateDialogAction() {
        super(null);
    }

    public CreateDialogAction(CodeInsightActionHandler handler) {
        super(handler);
    }

    @Override
    public void actionPerformed(AnActionEvent e) {

        // 获取编辑器中的文件
        Project project = e.getData(PlatformDataKeys.PROJECT);
        Editor editor = e.getData(PlatformDataKeys.EDITOR);
        PsiFile file = PsiUtilBase.getPsiFileInEditor(editor, project);

        // 获取当前类
        PsiClass targetClass = getTargetClass(editor, file);
        // 获取元素操作的工厂类
        PsiElementFactory factory = JavaPsiFacade.getElementFactory(project);

        // 生成代码
        new LayoutCreator(project, targetClass, factory, file).execute();
    }
}

生成代码,需要继承WriteCommandAction.Simple类,在run方法中写生成代码的逻辑,将生成dialog的代码存入StringBuilder,然后调用targetClass类中的add方法生成代码,最后再导入需要的类。

public class LayoutCreator extends WriteCommandAction.Simple {

    private Project project;
    private PsiFile file;
    private PsiClass targetClass;
    private PsiElementFactory factory;

    public LayoutCreator(Project project, PsiClass targetClass, PsiElementFactory factory, PsiFile... files) {
        super(project, files);
        this.project = project;
        this.file = files[0];
        this.targetClass = targetClass;
        this.factory = factory;
    }

    @Override
    protected void run() throws Throwable {
        // 将弹出dialog的方法写在StringBuilder里
        StringBuilder dialog = new StringBuilder();
        dialog.append("public void showDialog(){");
        dialog.append("android.support.v7.app.AlertDialog.Builder builder = new AlertDialog.Builder(this);");
        dialog.append("builder.setTitle("Title")n");
        dialog.append(".setMessage("Dialog content")n");
        dialog.append(".setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {n"  
                "@Overriden"  
                "public void onClick(DialogInterface dialog, int which) {n"  
                "tn"  
                "}"  
                "})n");
        dialog.append(".setNegativeButton("Cancel", new DialogInterface.OnClickListener() {n"  
                "@Overriden"  
                "public void onClick(DialogInterface dialog, int which) {n"  
                "tn"  
                "}"  
                "})n");
        dialog.append(".show();");
        dialog.append("}");

        // 将代码添加到当前类里
        targetClass.add(factory.createMethodFromText(dialog.toString(), targetClass));

        // 导入需要的类
        JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(project);
        styleManager.optimizeImports(file);
        styleManager.shortenClassReferences(targetClass);
    }
}

点击编译器右上角的绿色Run按钮,会重新启动一个新的IntelliJ IDEA的界面,在这里创建一个Android工程,点击Code,会看到Android Dialog选项,看下效果:

美高梅网投平台 15

Android Dialog

OK,到这里我们就成功的创建了一个插件,下面让我们来看看如何来部署插件。

四、新建Plugin Project

在打开的IntelliJ IDEA 中选择 File | New | Project

美高梅网投平台 16

123.png

groovy 我们暂时不勾选,点击 Next

美高梅网投平台 17

1234.png

最后输入项目名称确定,点击 finish 完成创建

点击ok,就创建了一个Action类了;

public class CreateDialogAction extends BaseGenerateAction {

    public CreateDialogAction() {
        super(null);
    }

    public CreateDialogAction(CodeInsightActionHandler handler) {
        super(handler);
    }

    @Override
    public void actionPerformed(AnActionEvent e) {

    }
}

注意把继承的AnAction改成BaseGenerateAction,下文需要用到BaseGenerateAction类中的相关方法。

4.部署插件

五、配置插件项目

创建好的 Plugin 项目中,会默认生成一个 plugin.xml 的配置文件
其中可以修改该插件项目的相关配置信息,比如插件名称、插件版本号等,如下图

美高梅网投平台 18

配置.png

各标签意义具体为:

  • [ id ] 插件id,类似于Android项目的包名,不能和其他插件项目重复,所以推荐使用com.xxx.xxx的格式

  • [ name ] 插件名称,别人在官方插件库搜索你的插件时使用的名称

  • [ version ] 插件版本号

  • [ vendor ] 插件发布者信息,可以添加邮箱链接

  • [ description ] 插件描述信息,在这里可以介绍你的插件内容,支持HTML标签

  • [ change-notes ] 插件版本变更日志,支持HTML标签

  • [ idea-version ] 对IntelliJ IDEA软件支持本插件版本号
    分为since-build最低版本 和 until-build最高版本,两个属性可以任选一或者同时使用
    官网有详细介绍 www.jetbrains.org/intellij/sd…
    大体规则为 since-build <= 支持版本 < until-build

  • [ extensions ] 自定义扩展,暂时用不到

  • [ actions ] 具体的插件动作,后面会介绍

配置中填写的信息,会在别人搜索你插件的时候展现介绍,在 File | Settings | Plugins 中查看已有插件,或者再点击 Browse respositories 中浏览插件中心里其他人发布的插件。当选中一个插件时,右侧就可以看到plugin.xml中配置的信息了,同样这里也可以进行插件的删除和添加安装操作,每次操作都需要重启软件后才能生效。

美高梅网投平台 19

配置2.png

代码实现

主要实现在类中自动生成代码,首先获取相关的操作类,已在代码中加入注释说明。

    public CreateDialogAction() {
        super(null);
    }

    public CreateDialogAction(CodeInsightActionHandler handler) {
        super(handler);
    }

    @Override
    public void actionPerformed(AnActionEvent e) {

        // 获取编辑器中的文件
        Project project = e.getData(PlatformDataKeys.PROJECT);
        Editor editor = e.getData(PlatformDataKeys.EDITOR);
        PsiFile file = PsiUtilBase.getPsiFileInEditor(editor, project);

        // 获取当前类
        PsiClass targetClass = getTargetClass(editor, file);
        // 获取元素操作的工厂类
        PsiElementFactory factory = JavaPsiFacade.getElementFactory(project);

        // 生成代码
        new LayoutCreator(project, targetClass, factory, file).execute();
    }
}

生成代码,需要继承WriteCommandAction.Simple类,在run方法中写生成代码的逻辑,将生成dialog的代码存入StringBuilder,然后调用targetClass类中的add方法生成代码,最后再导入需要的类。

    private Project project;
    private PsiFile file;
    private PsiClass targetClass;
    private PsiElementFactory factory;

    public LayoutCreator(Project project, PsiClass targetClass, PsiElementFactory factory, PsiFile... files) {
        super(project, files);
        this.project = project;
        this.file = files[0];
        this.targetClass = targetClass;
        this.factory = factory;
    }

    @Override
    protected void run() throws Throwable {
        // 将弹出dialog的方法写在StringBuilder里
        StringBuilder dialog = new StringBuilder();
        dialog.append("public void showDialog(){");
        dialog.append("android.support.v7.app.AlertDialog.Builder builder = new AlertDialog.Builder(this);");
        dialog.append("builder.setTitle("Title")n");
        dialog.append(".setMessage("Dialog content")n");
        dialog.append(".setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {n"  
                "@Overriden"  
                "public void onClick(DialogInterface dialog, int which) {n"  
                "tn"  
                "}"  
                "})n");
        dialog.append(".setNegativeButton("Cancel", new DialogInterface.OnClickListener() {n"  
                "@Overriden"  
                "public void onClick(DialogInterface dialog, int which) {n"  
                "tn"  
                "}"  
                "})n");
        dialog.append(".show();");
        dialog.append("}");

        // 将代码添加到当前类里
        targetClass.add(factory.createMethodFromText(dialog.toString(), targetClass));

        // 导入需要的类
        JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(project);
        styleManager.optimizeImports(file);
        styleManager.shortenClassReferences(targetClass);
    }
}

点击编译器右上角的绿色Run按钮,会重新启动一个新的IntelliJ IDEA的界面,在这里创建一个Android工程,点击Code,会看到Android Dialog选项,看下效果:

美高梅网投平台 20

image.png

填写相关信息

打开项目中的plugin.xml文件,填写相关的信息,这些信息会展示在插件库中,如下图所示。

美高梅网投平台 21

plugin

点击Bulid菜单下的Prepare Plugin按钮会在项目的根目录生成jar插件,如下图所示:

美高梅网投平台 22

生成插件

六、开始编写插件

项目创建好时有一个src文件夹,可以在其中File | New ...新建文件,
主要有这么几种针对插件的特殊文件类型

  • GUI Form:表单界面
  • Dialog:对话框
  • XXXComponent:作用域类,其中又分为Application、Project、Module 分为作用于不同范围
  • Action:处理插件交互行为的类

在项目中的 src 目录中,New | Plugin Devkit | Action

美高梅网投平台 23

开始编写插件Action.png

Action的创建的对话框如下:

  • Action ID: 动作ID,推荐用“插件名.XXAction”的格式
  • Class Name:编写Action的类文件名
  • Name:动作在菜单选项中展示的名字
  • Description:动作描述
  • Groups:定义这个动作选项所属的组,比如EditMenu就对应IDE菜单栏上的Edit,CodeMenu就对应菜单栏上的Code
  • Actions:是当前选中Groups下已有的Action动作,比如上图示如果我们选择CodeMenu就会展示Code中已有的几个选项
  • Anchor:用来指定动作选项在Groups中的位置,Frist就是最上面、Last是最下面,也可以设在某个选项的上/下方
  • Keyboard Shortcuts:调用插件Action的快捷键,可以不填,要注意热键冲突

创建好Action后,会自动在plugin.xml配置文件的actions标签中新增一个对应的Action动作信息。

  <actions>
    <!-- Add your actions here -->
    <action id="TestID" class="com.Test" text="Test" description="Test">
      <add-to-group group-id="EditMenu" anchor="first"/>
      <keyboard-shortcut keymap="$default" first-keystroke="ctrl Q"/>
    </action>
  </actions>

注意

  • 这里的信息我们都可以再次修改,但是 class name 修改时要注意和类文件名匹配
  • 可以修改添加多个,即在不同菜单中都可以选择使用
  • 同一个 group下多个 action 的 id 不能重复.

src下创建好的Action类会默认继承 AnAction,然后实现 actionPerformed 方法,在方法中添加如下代码,让点击这个 Action 的时候弹出一个输入框。

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;

public class Test extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {
        // TODO: insert action logic here
        Project project = e.getData(PlatformDataKeys.PROJECT);
        String txt = Messages.showInputDialog(project,
                "What is your name?",
                "Input your name",
                Messages.getQuestionIcon());
        Messages.showMessageDialog(project,
                "Hello, "   txt   "!n I am glad to see you.",
                "Information",
                Messages.getInformationIcon());
    }
}

写好代码后,run运行项目,此时会自动启动一个新的IntelliJ IDEA项目,这个新项目里就会包含我们刚编写的插件选项了。

美高梅网投平台 24

这里写图片描述

部署插件

打开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>

其中 <idea-version since-build="173.0"/>的值需要去http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html找一下 你自己的AndroidStudio版本的对应关系

点击Bulid菜单下的Prepare Plugin按钮会在项目的根目录生成jar插件,如下图所示:

美高梅网投平台 25

生成插件

安装插件

打开Andorid Studio,选择File -> Settings -> Plugins -> Install plugin from disk,选择我们生成的jar然后重启即可,如下图所示,红框标记的部分就是我们刚才在plugin.xml文件中填写的信息:

美高梅网投平台 26

安装插件

七、打包

比较简单,直接在顶部主菜单栏中选择 Build | Prepare Plugin Module XXX For Deployment 即可。

美高梅网投平台 27

这里写图片描述

打包前要注意把 plugin.xml 配置文件中的相关信息填写完整。

美高梅网投平台 28

这里写图片描述

打完包后,将会生成 .Jar 包

美高梅网投平台 29

这里写图片描述

类似于安卓打包生产的apk,这个时候你就可以把它丢给别人使用了

安装插件

打开Andorid Studio,选择File -> Settings -> Plugins -> Install plugin from disk,选择我们生成的jar然后重启即可,如下图所示,红框标记的部分就是我们刚才在plugin.xml文件中填写的信息:

美高梅网投平台 30

安装插件

发布插件

还可以把插件发布到仓库,让其他人也能使用,进入JetBrains官网,注册账号,提交插件jar包,填写相关信息,等待审核就可以了。

官方说明

八、Android Studio 测试插件

在上一章中,我们已经打包好插件 Plugin.jar ,现在我们在 Android Studion 测试一下。

发布插件

还可以把插件发布到仓库,让其他人也能使用,进入 JetBrains 官网,注册账号,提交插件jar包,填写相关信息,等待审核就可以了。

5.遇到的问题

安装插件的时候出现下面的报错,是因为IDEA中jdk的版本是1.8,而我的Android Studio中jdk的版本是1.7导致的,版本统一就好了。

Android Dialog threw an uncaught PluginException.

8.1 安装插件

File --> Settings --> Plugins --> Install plugin from disk

美高梅网投平台 31

这里写图片描述

遇到的问题

安装插件的时候出现下面的报错,是因为IDEA中jdk的版本是1.8,而我的Android Studio中jdk的版本是1.7导致的,版本统一就好了。

Android Dialog threw an uncaught PluginException.

6.总结

总结一下之前的步骤:

  • 下载Intellij IDEA,新建一个Intellij Platform Plugin的项目(注意jdk版本的问题,最新的IDEA需要jdk 1.8版本)

  • 在项目中新建一个Action,把继承的AnAction改成BaseGenerateActio

  • 编写API,这个可以参考其他插件的写法

  • 点击Bulid菜单下的Prepare Plugin按钮生成jar,这个jar就可以直接用来安装了

8.2 测试插件

美高梅网投平台 32

或者按快捷键 Ctrl Q 启动插件。

.总结

总结一下之前的步骤:

1.下载Intellij IDEA,新建一个Intellij Platform Plugin的项目(注意jdk版本的问题,最新的IDEA需要jdk 1.8版本)

2.在项目中新建一个Action,把继承的AnAction改成BaseGenerateActio

3.编写API,这个可以参考其他插件的写法

4.<idea-version since-build="173.0"/>的值需要去http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html找一下 你自己的AndroidStudio版本的对应关系

5.点击Bulid菜单下的Prepare Plugin按钮生成jar,这个jar就可以直接用来安装了

7.写在最后

源码已托管到GitHub上,欢迎Fork,觉得还不错就Start一下吧!

GitHub地址:https://github.com/alidili/AndroidStudioPlugin

欢迎同学们吐槽评论,如果你觉得本篇博客对你有用,那么就留个言或者点下喜欢吧(^-^)

九、上传插件

IntelliJ的插件也有一个市场,是官方提供的,可以在平台上发布自己的插件
地址:https://plugins.jetbrains.com/

打开插件中心,注册好账号,然后选择 Upload Plugin
将你生成的插件jar包上传,然后选择分类,最后确认完成上传。

美高梅网投平台 33

20170918153736398.png

十、参考资料

【Android Studio Plugin 插件开发教程】https://juejin.im/post/599f7f546fb9a0248c2de496

下一篇:Android Studio 插件开发详解二:工具类


个人微信号:zhaoyanjun125 , 欢迎关注
[图片上传失败...(image-726606-1513683796842)]

TAG标签:
版权声明:本文由美高梅网投平台发布于美高梅简介,转载请注明出处:自己动手写一个Android,Studio插件开发