自己动手实现一个Android Studio插件
在使用Android Studio开发的时候,大部分人都会使用一些插件来提高开发效率,例如我们所熟知的butternife,selector,,GsonFormat等,这些分别从不同的原理来帮助我们提高开发效率,也美化了我们的代码结构。
既然插件有这么多好处,我们就来自己实现一个简单的吧,这里为了方便讲解我们,我们就以Android tintBar作为例子来讲解。Android Studio是基于Intellij IDEA,网上查找后发现好像可以在Intellij IDEA中进行插件开发,Android Studio中new project是没有plugin选项的。
软件环境:Java 8+intellij Idea(没有的请到Intellij IDEA下载),https://www.jetbrains.com/idea/#chooseYourEdition
1,新建一个项目,File->New Project,如果你是第一次创建的时候,需要为项目制定 sdk,点击右边的new按钮就好了,它会自己为你找到sdk的索引。
项目建好后如下:
说明:其中plugin.xml为项目的配置说明文件,相当于Android项目中的AndroidManifest.xml。
<idea-plugin version="2">
<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="145.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>
到此,我们的环境就 搭建完成了。接下来我们新建编写插件代码。
2,编写插件
在新建的包下建一个Action类。
说明:Action ID:标识ID,就像Android中xml的组件@+id
Class Name:生成的类名
Name、Description:菜单选项的名字和描述
Groups:定义这个菜单选项出现的位置,比如我图中设置的当点击菜单栏Edit时,第一项会出现test的选项,右边的Anchor是选择该选项出现的位置,默认First即最顶部。
系统为我们生成的Action代码:
public class PluginAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
// TODO: insert action logic here
}
}
而在plugin.xml中也多了一段代码:
<action id="PluginID" class="PluginAction" text="PluginAction" description="PluginTest">
<add-to-group group-id="CodeMenu" anchor="first"/>
<keyboard-shortcut keymap="$default" first-keystroke="alt Q"/>
</action>
这样就是实现当用户点击PluginAction菜单或者按快捷键alt +Q后的就能实现功能了。
3,创建Dialog
和Action的创建一样,Dialog也可以直接在在src或者包名下右键->new ->Dialog,新建好后是这样的。
然后我们点开图形化界面。
然后我们为当点击ok按钮的时候绑定事件。
PluginDialog dialog = new PluginDialog();
dialog.setVisible(true);
4,编写一个Configurable功能
当你的插件需要或允许用户自定义一些配置时,比如我的插件允许用户定义自己想要生成的代码风格,只需用户打开Settings->other settings就会看到一个配置界面。
由于版本差异,我也没找到,这个后面补上。
5,插件部署
打开项目中的plugin.xml文件,填写相关的信息,这些信息会展示在插件库中,如下图所示。
点击Bulid菜单下的Prepare Plugin按钮会在项目的根目录生成jar插件,如下图所示
6,安装插件
打开Android sutdion,File -> Settings -> Plugins -> Install plugin from disk。
7,发布插件
如果你想把你的插件提供给大家使用,还可以把插件发布到仓库,进入JetBrains官网,填写发布的相关信息,提交插件jar包,等待审核就可以了。
自己动手实现一个Android Studio插件的更多相关文章
- 自己编写Android Studio插件 别停留在用的程度了(转载)
转自:自己编写Android Studio插件 别停留在用的程度了 1概述 相信大家在使用Android Studio的时候,或多或少的会使用一些插件,适当的配合插件可以帮助我们提升一定的开发效率,更 ...
- 推荐几款实用的Android Studio 插件
推荐几款实用的Android Studio 插件 泡在网上的日子 发表于 2015-10-09 10:47 第 17453 次阅读 插件,Android Studio 10 编辑推荐:稀土掘金,这是一 ...
- 8 个最优秀的 Android Studio 插件
Android Studio是目前Google官方设计的用于原生Android应用程序开发的IDE.基于JetBrains的IntelliJ IDEA,这是Google I/O 2013第一个宣布的作 ...
- [精品推荐]Android Studio插件整理
GOOD 现在Android的开发者基本上都使用Android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行).使用好Android Studio插件能大量的减少我们 ...
- 优秀的 Android Studio 插件
转自:http://www.codeceo.com/article/8-android-studio-plugins.html Android Studio是目前Google官方设计的用于原生Andr ...
- 最完整Android Studio插件整理 (转)
转自:http://blog.csdn.net/alpha58/article/details/62881144 现在Android的开发者基本上都使用android Studio进行开发(如果你还在 ...
- 非常有用的开发工具之Android Studio插件
我们都知道Eclipse开发Android将在今年年底google不再继续提供相应的开发支持,转而开始强烈发展Android Studio,现在我就分享几款能帮助团队提升工作效率的几个Android ...
- Android studio 插件之 GsonFormat (自己主动生成javabean)
概述 相信大家在做开发的过程中都写过非常多的javabean ,非常多情况下 都是一个列表数据就是一个单独的javabean.假设大家自己敲的话费时费力 还非常easy敲错. 今天给大家推荐一个插件 ...
- Android Studio插件推荐-GsonFormat,ButterKnifeZelezny
原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/50557786 本篇介绍的仅仅适用android studio和 Intellij ...
随机推荐
- 冰精冻西瓜[P3787洛谷]
题目描述 琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地.这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有根树,琪露诺想要把它们冷冻起来慢慢吃. 这些西瓜蔓具有神奇的性质,可以将经过它的 ...
- CSAPP-链接
主要任务: 1.符号解析 在声明变量和函数之后,所有的符号声明都被保存到符号表. 而符号解析阶段会给每个符号一个定义. 2.重定位: 把每个符号的定义与一个内存位置关联起来,然后修改所有对这些符号的引 ...
- 【hihoCoder 1419】重复旋律4
Description 小 Hi 平时的一大兴趣爱好就是演奏钢琴. 我们知道一个音乐旋律被表示为长度为 N的数构成的数列. 小 Hi 在练习过很多曲子以后发现很多作品中的旋律有重复的部分. 我们把一段 ...
- 【bzoj4569 scoi2016】萌萌哒
题目描述 一个长度为n的大数,用S1S2S3...Sn表示,其中Si表示数的第i位,S1是数的最高位,告诉你一些限制条件,每个条件表示为四个数,l1,r1,l2,r2,即两个长度相同的区间,表示子串S ...
- 4455[Zjoi2016]小星星 容斥+dp
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 527 Solved: 317[Submit][Status] ...
- 音频自动增益 与 静音检测 算法 附完整C代码
前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用于评估一定长度音频的音量强度, 而分析之后,很多类似的需求,肯定是做音频增益,提高音量诸如此类做法. ...
- Mysq 索引优化
MYSQL支持的索引类型 BTREE索引 特点: 通过引用以B+权的结构存储数据 能够加快数据的查询速度 更适合进行范围查找 应用: 全值匹配的查询 = 匹配最左前缀的查询 匹配列前缀查询 LIKE ...
- SqlServer查询优化方法
MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 文章来源http://bbs.csdn.net/topics/250004467 1.没有索引或者没有用到索引(这是查询慢最常 ...
- python2.7入门---条件语句
前段时间呢,把MongoDB的基础内容了解的差不多了.接下来,就开始学习python2.7的基础内容喽.接着前面的知识点来学习.首先,来看一下条件语句.Python条件语句是通过一条或多条语句 ...
- IOS UITextView支持输入、复制、粘贴、剪切自定义表情
UITextView是ios的富文本编辑控件,除了文字还可以插入图片等.今天主要介绍一下UITextView对自定义表情的处理. 1.首先识别出文本中的表情文本,然后在对应的位置插入NSTextAtt ...