自己动手实现一个Android Studio插件

在使用Android Studio开发的时候,大部分人都会使用一些插件来提高开发效率,例如我们所熟知的butternife,selector,,GsonFormat等,这些分别从不同的原理来帮助我们提高开发效率,也美化了我们的代码结构。

既然插件有这么多好处,我们就来自己实现一个简单的吧,这里为了方便讲解我们,我们就以Android tintBar作为例子来讲解。Android Studio是基于Intellij IDEA,网上查找后发现好像可以在Intellij IDEA中进行插件开发,Android Studio中new project是没有plugin选项的。


1,新建一个项目,File->New Project,如果你是第一次创建的时候,需要为项目制定 sdk,点击右边的new按钮就好了,它会自己为你找到sdk的索引。



项目建好后如下:


说明:其中plugin.xml为项目的配置说明文件,相当于Android项目中的AndroidManifest.xml。

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <idea-plugin version="2">  
  2.   <id>com.your.company.unique.plugin.id</id>  
  3.   <name>Plugin display name here</name>  
  4.   <version>1.0</version>  
  5.   <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>  
  6.   
  7.   <description><![CDATA[ 
  8.       Enter short description for your plugin here.<br> 
  9.       <em>most HTML tags may be used</em> 
  10.     ]]></description>  
  11.   
  12.   <change-notes><![CDATA[ 
  13.       Add change notes here.<br> 
  14.       <em>most HTML tags may be used</em> 
  15.     ]]>  
  16.   </change-notes>  
  17.   
  18.   <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->  
  19.   <idea-version since-build="145.0"/>  
  20.   
  21.   <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html  
  22.        on how to target different products -->  
  23.   <!-- uncomment to enable plugin in all products  
  24.   <depends>com.intellij.modules.lang</depends>  
  25.   -->  
  26.   
  27.   <extensions defaultExtensionNs="com.intellij">  
  28.     <!-- Add your extensions here -->  
  29.   </extensions>  
  30.   
  31.   <actions>  
  32.     <!-- Add your actions here -->  
  33.   </actions>  
  34.   
  35. </idea-plugin>  

到此,我们的环境就 搭建完成了。接下来我们新建编写插件代码。

2,编写插件

在新建的包下建一个Action类。



说明:Action ID:标识ID,就像Android中xml的组件@+id 
           Class Name:生成的类名 
           Name、Description:菜单选项的名字和描述 
          Groups:定义这个菜单选项出现的位置,比如我图中设置的当点击菜单栏Edit时,第一项会出现test的选项,右边的Anchor是选择该选项出现的位置,默认First即最顶部。

系统为我们生成的Action代码:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class PluginAction extends AnAction {  
  2.   
  3.     @Override  
  4.     public void actionPerformed(AnActionEvent e) {  
  5.         // TODO: insert action logic here  
  6.     }  
  7. }  

而在plugin.xml中也多了一段代码:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <action id="PluginID" class="PluginAction" text="PluginAction" description="PluginTest">  
  2.       <add-to-group group-id="CodeMenu" anchor="first"/>  
  3.       <keyboard-shortcut keymap="$default" first-keystroke="alt Q"/>  
  4.     </action>  

这样就是实现当用户点击PluginAction菜单或者按快捷键alt +Q后的就能实现功能了。

3,创建Dialog

和Action的创建一样,Dialog也可以直接在在src或者包名下右键->new ->Dialog,新建好后是这样的。


然后我们点开图形化界面。


然后我们为当点击ok按钮的时候绑定事件。

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. PluginDialog dialog = new PluginDialog();  
  2.        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包,等待审核就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值