Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件

项目源码

https://github.com/boredream/AndroidDatabaseGeneratorPlugin

系列教程

Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件

Android Studio Plugin 插件开发教程(二) —— 插件SDK中的常用对象介绍

Android Studio Plugin 插件开发教程(三) —— 制作一个自动生成数据库代码的插件

Android Studio Plugin 插件开发教程(四) —— 为自动生成数据库代码的插件添加UI

本教程基于官方文档编写,原版地址如下
官方文档 http://www.jetbrains.org/intellij/sdk/docs/welcome.html

搭建环境:
下载IntelliJ Idea客户端并安装
https://www.jetbrains.com/idea/download/

一、配置SDK

打开IDE后,选择 File | Project Structure
在配置窗口中点击 New… 新增SDK,选择 IntelliJ Platform Plugin SDK
(如果第一次打开IDE,选择右下角 Configure | Project Defaults | Project Structure 打开配置窗口)

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 Project Structure

弹出页面中,选择默认IntelliJ IDEA文件夹,确认

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 Project Structure

二、新建Plugin Project

在打开的IntelliJ IDEA 中选择 File | New | Project
左侧菜单选择IntelliJ Platform Plugin项目,SDK选择刚才新配置的,下一步
其中 Groovy、Python等啥其他附加的内容无需勾选
最后输入项目名称确定,完成创建

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 New Project

三、配置插件项目

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

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 Paste_Image.png

各标签意义具体为:

  • <id> 插件id,类似于Android项目的包名,不能和其他插件项目重复,所以推荐使用com.xxx.xxx的格式
  • <name> 插件名称,别人在官方插件库搜索你的插件时使用的名称
  • <version> 插件版本号
  • <vendor> 插件发布者信息,可以添加邮箱链接
  • <description> 插件描述信息,在这里可以介绍你的插件内容,支持HTML标签
  • <change-notes> 插件版本变更日志,支持HTML标签
  • <idea-version> 对IntelliJ IDEA软件支持本插件版本号
    分为since-build最低版本 和 until-build最高版本,两个属性可以任选一或者同时使用
    官网有详细介绍 http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html
    大体规则为 since-build <= 支持版本 < until-build
  • <extensions> 自定义扩展,暂时用不到
  • <actions> 具体的插件动作,后面会介绍

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

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 Plugins

四、开始编写插件

插件是依附于IDE的,为其提供一些小功能,比如Android Studio中,
Code | Generate | Getter and Setter 这个自动生成get和set方法的,其实就算是个插件

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 Getter and Setter

当然,这些都是Android Studio中默认自带的,我们可以根据需要开发新的插件

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

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

其中最主要的是Action类
之前例子中提到了,生成getter setter方法的功能是在菜单栏中的Code | Generate | Getter and Setter选择的
那么我们自己创建的插件选项在哪里呢?属于哪个菜单呢?

这里在创建Action类的时候就可以指定操作入口,Action的创建的对话框如下

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 New 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="DatabaseGenerator.GenAction" class="DatabaseGenerateAction" text="Database Generator"
            description="auto generate db code, such as Table / CRUD sql ...">
      <add-to-group group-id="CodeMenu" anchor="last"/>
    </action>
  </actions>

注意

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

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

public class DatabaseGeneratorAction extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent e) {
        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项目,这个新项目里就会包含我们刚编写的插件选项了

如果想调试Android代码,可以先在IntelliJ中的Project Structure里配置好Android环境,然后run插件项目运行新的IntelliJ时建一个Android Project就好了

新运行起来的IDE中就可以看到菜单栏里的 Code 最底部就出现了一个Database Generator选项

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 plugin

点击就会触发我们编写的功能

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 plugin run

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 plugin run

如果你觉得你的插件不好找,也可以自行在根目录上新建一个和Code、Edit等同级的group,需要在配置文件里新建一个group,然后<add-to-group>指定其添加到MainMenu主菜单上

<actions>
   <!-- Add your actions here -->
   <group id="BoredreamPlugin.PluginSet" text="BdPlugin" description="the plugin set by boredream">
      <add-to-group group-id="MainMenu" anchor="last"  />
      <action id="DatabaseGenerator.GenAction" class="DatabaseGenerateAction" text="Database Generator" description="A test menu item" />
   </group>
</actions>

这个时候再run插件就会发现它单独建立了一个group

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 group

但是要慎用~ 毕竟每个插件都加一个group那主菜单栏就乱死了,不像藏在二级菜单里会低调的多

五、打包

(这里我们先把整个流程介绍完,更复杂的插件开发会下一篇介绍)
比较简单,直接在顶部主菜单栏中选择 Build | Prepare Plugin Module XXX For Deployment即可
打包前要注意把 plugin.xml 配置文件中的相关信息填写完整

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 group

当提示完成后,会在项目根目录下生成一个 XXX.jar 的包

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 jar

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

六、发布

不过安卓的apk发布,通常会有一个应用市场比如Google Play,应用宝啥的
IntelliJ的插件也有一个市场,是官方提供的,可以在平台上发布自己的插件
地址https://plugins.jetbrains.com/

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 publish plugin

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

此时虽然完成上传,但是最好要完善一下Plugin Detail信息,方便别人对你的插件有更详细的了解
还要再设置一下插件的支持IDE范围,否则别人可能在Android Studio插件库里搜不到你的plugin!!!

IntelliJ开发的插件是针对所有IntelliJ旗下产品的,而他们之间的插件库市场是非相通的
所以发布插件的时候一定要指定你的插件是那些IDE可以使用的,比如要支持AndroidStudio
完善Plugin Detail信息的时候,会有一个选项 Supported products 即支持产品范围
默认是 勾选了“使用插件中的配置里指定的产品范围”
这种使用插件项目里的配置方式,需要你在plugin.xml中添加<depends>标签说明,比较麻烦
<depends>用法参考 http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html

不过你也可以取消勾选,直接在上传中心这里设置产品范围,推荐这种方式~
IntelliJ的俩是默认的,然后我们再勾选Android Studio,最后save保存更新

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 Paste_Image.png

七、安装使用

打开你常用的Android Studio开始安装使用这些插件吧,方式有两种

  1. 从插件中心直接下载安装
    IDE中选择 File | Settings | Plugins ,弹出对话框中选 Browse respositories 浏览插件库
    搜索你自己发布的插件,然后安装~ 安装完成后重启Android Studio即可开始使用插件了

  2. 从本地安装插件jar包
    这种需要用到插件项目生成的jar包,
    选择Browse respositories选项旁边的 Install plugin from disk,然后找到jar文件选中OK即可

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 Install Plugin

注意,新发布到市场的插件可能暂时搜不到,有延迟~

好了,介绍结束~

开始编写你的第一个插件吧!!!

后续教程还会带着大家一起开发一个具体的实用插件,敬请期待~

最后安利下自己的插件,自动布局文件的相关代码,懒人必备!还不用引入第三方的注入框架!
https://github.com/boredream/BorePlugin
欢迎star和follow

《Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件》 Layout Creator

    原文作者:boredream
    原文地址: https://www.jianshu.com/p/336a07b9d98a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞