Android Studio 插件开发详解一:入门练手
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003
本文出自【赵彦军的博客】
一:概述
相信大家在使用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 {
@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项目,这个新项目里就会包含我们刚编写的插件选项了。
七、打包
比较简单,直接在顶部主菜单栏中选择 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 , 欢迎关注
Android Studio 插件开发详解一:入门练手的更多相关文章
- Android Studio 插件开发详解四:填坑
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 在前面我介绍了插件开发的基本流程 [And ...
- Android Studio 插件开发详解三:翻译插件实战
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 一:概述 如果不了解插件开发基础的同学可以 ...
- Android Studio 插件开发详解二:工具类
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...
- Android SDK Manager详解
Android基础知识——Android SDK Manager详解 做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本.buildTools版本等等. ...
- android studio 插件开发(自动生成框架代码插件)
android studio 插件开发 起因 去年公司开始上新项目,正好android在架构这方面的讨论也开始多了起来,于是mvp架构模型就进入我们技术选择方案里面,mvp有很多好处,但是有一个非常麻 ...
- Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名
Apk签名,每一个Android开发者都不陌生.它就是对我们的apk加了一个校验参数,防止apk被掉包.一开始做Android开发,就接触到了apk签名:后来在微信开放平台.高德地图等平台注册时,需要 ...
- android:ToolBar详解
android:ToolBar详解(手把手教程) 泡在网上的日子 发表于 2014-11-18 12:49 第 124857 次阅读 ToolBar 42 来源 http://blog.mosil.b ...
- Android之canvas详解
首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...
- 【转】Android Canvas绘图详解(图文)
转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android Canvas绘图详解(图文) 泡 ...
随机推荐
- iOS中 FMDB第三方SQLite数据库 UI_20
1.什么是FMDB? FMDB是iOS平台下SQLite数据库,只不过它是OC方式封装了C语言的SQLite语句,使用起来更加面向对象 2.FMDB的优点:1.使用起来更加面向对象; 2.对比苹果自带 ...
- shell的case语句
case语句格式 # vi test.sh : echo "input : " read num echo "the input data is $num" c ...
- 【python】网页中字符编码转换 unicode-escape
有的时候我们用python来抓取网页会得到类似 '\\u003C\\u0066\\u0072\\u006F\\u006D\\u003E' 或者 '%u003c%u0062%u0072%u003e%u0 ...
- 自定义gradle的property
在android studio上运行项目,gradle的配置是必不可少的,但是随着项目的逐渐成长,迎面而来的就是.各种依赖包的添加,数不胜数的签名,渠道包等,整个gradle变得很乱,这样其实我们可以 ...
- Android之BaseAdapter的优雅实现
在android的开发过程中,我们不可避免的要使用ListView来展示我们的Activity上面的内容.你可以使用很多种方式来实现这一功能,但是如何优雅快速的来实现呢?这就是我要写的了,既为了大家共 ...
- XBMC源代码分析 7:视频播放器(dvdplayer)-输入流(以libRTMP为例)
前文分析了XBMC的基本结构: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 XBMC源代码分 ...
- 9.6、Libgdx之罗盘
(官网:www.libgdx.cn) 有些Android和iOS设备可能需要检测使用罗盘检测方向. 注意:罗盘当前在iOS设备中不可用,RoboVM暂不支持. 查询当前罗盘当前是否可用: boolea ...
- 9.2、Libgdx的输入处理之鼠标、触摸和键盘
(官网:www.libgdx.cn) Libgdx支持的最主要的设备是desktop或浏览器的鼠标支持,Android的触摸屏支持和键盘的支持.我们接下来了解一下. 键盘 用户按下或释放一个按键生成了 ...
- Get/POST方法提交的长度限制
1. Get方法长度限制 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制.这个限制是特定的浏览器及服务器对它的限制. 如:IE对URL长度的限制 ...
- [SqlServer]如何向数据库插入带有单引号(')的字符串
今天在做一个复制功能的时候,发现存在单引号字符串与INSERT INTO 语句的' '产生冲突. 在网络上找到了一个这样功能 如何向数据库插入带有单引号(')的字符串 用SQL语句往数据库某字段(字符 ...