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

系列目录

Android Gradle使用总结
Android Studio 插件开发详解一:入门练手
Android Studio 插件开发详解二:工具类
Android Studio 插件开发详解三:翻译插件实战
Android Studio 插件开发详解四:填坑
Android Gradle 自定义Task 详解
Android Gradle 自定义Task详解二:进阶

一:概述

相信大家在使用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插件。

二:前期准备

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

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

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

三:Android Studio Plugin 开发工具

开发工具我们选择用 IntelliJ IDEA

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

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

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

四、新建Plugin Project

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

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

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

五、配置插件项目

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

各标签意义具体为:

  • [ 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中配置的信息了,同样这里也可以进行插件的删除和添加安装操作,每次操作都需要重启软件后才能生效。

六、开始编写插件

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

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

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

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 {@Overridepublic void actionPerformed(AnActionEvent e) {// TODO: insert action logic hereProject 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项目,这个新项目里就会包含我们刚编写的插件选项了。

七、打包

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

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

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

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

八、Android Studio 测试插件

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

8.1 安装插件

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

8.2 测试插件

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

九、上传插件

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

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

十、参考资料

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

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


个人微信号:zhaoyanjun125 , 欢迎关注
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r6JBylxU-1604565079383)(http://o7rvuansr.bkt.clouddn.com/weixin200.jpg)]

Android Studio 插件开发详解一:入门练手相关推荐

  1. Android Studio 插件开发详解四:填坑

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  2. Android Studio 插件开发详解三:翻译插件实战

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  3. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  4. Android Studio 版本号详解

    Android Studio 版本号详解 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/69951965 本文出自[赵彦军的博客] ...

  5. 视频教程-Android Studio 开发详解-Android

    Android Studio 开发详解 1999年开始从事开发工作,具备十余年的开发.管理和培训经验. 在无线通信.Android.iOS.HTML5.游戏开发.JavaME.JavaEE.Linux ...

  6. Android Studio 安装详解及安装过程中出现的问题解决方案

    Android Studio 安装详解及安装过程中出现的问题解决方案 一,Android Studio安装包下载, 首先到官网下载,就是去Android Studio中文社区官网下载你的平台需要的安装 ...

  7. android组件模板,提高效率必备神器 ---- Android Studio模板详解

    原标题:提高效率必备神器 ---- Android Studio模板详解 Android Studio模板大家应该很熟悉,你新建一个project或者module的时候,AS会帮你提供几个选项供你选择 ...

  8. Android Studio 分析器详解

    Android  Profiler分为三大模块: cpu.内存 .网络.基本的使用在上一篇文章有讲到.这里详细说一下. 一. CPU分析器CPU Profiler CPU分析器可帮助您实时检查应用程序 ...

  9. Android Studio Flavors详解

    这两天发现Android Studio 的Flavors用起来相当给力!这里跟大家分享下: Flavors中文翻译过来叫"口味",不知道确切叫法是啥,它的功能就是允许你的APP有多 ...

最新文章

  1. fail-fast和fail-safe的介绍和区别
  2. 解决response响应乱码
  3. netty reactor线程模型分析
  4. LeetCode 190. Reverse Bits (算32次即可)
  5. 使用固态存储SSD或PCIe卡
  6. P7293-[USACO21JAN]Sum of Distances P【统计,bfs】
  7. Python学习第二天----网络基础及操作系统简介(安装linux系统)
  8. Thinking In Design Pattern——Unit Of Work(工作单元)模式探索
  9. IT男几时而立(上)
  10. 37. 错误与异常处理(1)
  11. 华为笔试题分享:分糖果
  12. 蒟蒻打CF#729div 2
  13. 【露】UK大冒险之——变身小小小黄鸡
  14. Linux下Mysql5.5的Cmake安装以及sphinx结合
  15. amd cpu 安卓模拟器_AMD的CPU如何运行安卓模拟器?
  16. 狼羽网络:创建病毒产品的5种方法
  17. 不知道怎么把PDF文档转Word?来看看这几个好用的PDF转Word软件
  18. 1.结束进程的正确方式
  19. UniAccess Agent 的删除方法
  20. 163企业邮箱注册申请后怎么使用

热门文章

  1. mysql 重启失败,重启MySQL服务失败
  2. linux用avk怎么提取字符,在Linux下进行视频音频格式转换提取等
  3. mysql的内存数据库,MySQL内存数据库的新选择-MariaDB4J
  4. leetcode 刷题142 143
  5. face_recognition快速入门
  6. 十八、前端必学Bootstrap美化(上篇)
  7. 微信小程序开发 使用高德地图(精准一些)
  8. 基于flink+clickhouse构建亿级电商全端用户画像平台训练营
  9. CoSENT:特征式匹配与交互式匹配有多大差距?
  10. 对凸优化(Convex Optimization)的一些浅显理解