AndroidStudio的插件开发: 从摸索开始(一)
前言:
Studio是Android开发的一款神器,好处也不用再赘述,它也支持安装插件来自动生成各种代码或资源文件,提高我们的开发效率;这里列举几个有代表性的插件:
- Android ButterKnife Zelezny,出自Jake Wharton大神,用来替代findViewById,自动声明控件并通过注解绑定id的插件;
- GsonFormat,谷歌提供用来根据json字符串生成Java Bean的插件;
- Parcelable,用来将Java Bean自动生成实现Parcelable接口,并重写接口中的方法的插件;
- Selector Chapek for Android,用来自动生成状态选择器的插件;
既然有这么多经典的轮子,我们还有必要学会去造轮子吗?答案是有必要,实际工作中很多公司是有规定,不能随便用第三方工具,如果你遇上这种情况你就糗了,只好默默的干着一样的事,敲着重复又没有含金量的代码;如果你会自己写插件,那么你可以按照公司的需求,敲出一个插件帮忙生成代码,提高了开发速率,弄不好老板还因为这个赏识你,弄个技术经理架构师啥的给你当当,升职加薪不在话下,想想都开心;
通过这篇文章,你可以了解到:
1. 用什么开发AndroidStudio的插件
2.如何配置开发IDE
3.能编写一个简易自动生成代码的插件(getter & setter)
1. 用什么开发AndroidStudio的插件
补充 :至于如何安装配置IDE,以及将插件打包成.jar,请看这篇文章 ,这是刚刚看到的别的哥们的一篇文章,感觉比我写的详细;
Studio是在IntelliJ IDEA的基础上开发出来的,因此我们要开发一个Studio的插件,就需要下载一个IntelliJ IDEA下载链接 ,请注意是下载Community 版本
![](https://img.haomeiwen.com/i4893685/a4c6827cf45248c0.png)
2.如何配置开发IDE
点击安装文件一路Next, 安装好你的IDE,运行;配置SDK的时候,点击New, 先选择JDK的路径,再点击New, 再选择要下载的IntelliJ IDEA版本即可下载,配置不完全也不必担心,在工程中IDE会提示你还缺什么没安装并会弹出setup按钮快捷下载安装;
![](https://img.haomeiwen.com/i4893685/2383df7a5ad826e4.png)
![](https://img.haomeiwen.com/i4893685/34d773b3a835765c.png)
创建工程:请注意创建的是一个IntelliJ Platform
![](https://img.haomeiwen.com/i4893685/aca4f2c2f2ddf1fa.png)
创建完成工程后的目录
![](https://img.haomeiwen.com/i4893685/0534036254ba0011.png)
创建一个Action: 对着包目录右键 --》 New --> Action
![](https://img.haomeiwen.com/i4893685/0112000d83efd512.png)
![](https://img.haomeiwen.com/i4893685/356deaba425caaa7.png)
plugins.xml注意事项:
我们配置的Action在plugins.xml中生成的目录;
![](https://img.haomeiwen.com/i4893685/56d2e8b201684837.png)
3.编写一个简易自动生成代码的插件(SetterAndGetter)
方法说明
![](https://img.haomeiwen.com/i4893685/637a3b910cc37b1e.png)
理清思路:
通过AnActionEvent获取到正在操作的PsiClass对象, 传入自定义的一个代码生成器中;
调用代码生成器的execute方法,执行生成代码的逻辑
![](https://img.haomeiwen.com/i4893685/e0015f9c8ae134ee.png)
CodeGenerator分析
源码上传到了github上, 想下载源码的请下载 , 这里对一些使用到的api进行解释
获取PsiClass对象中的所有方法和字段,各种修饰符的都可以获取到
![](https://img.haomeiwen.com/i4893685/70a762496c14ab7f.png)
execute方法, 生成代码并写入Java文件中的逻辑
![](https://img.haomeiwen.com/i4893685/2b7146d39912fadd.png)
createMethodNameByField方法,根据字段名生成set/get方法名
![](https://img.haomeiwen.com/i4893685/f41640189035deec.png)
isMethodExit方法,判断该方法名的方法是否存在
![](https://img.haomeiwen.com/i4893685/db662e278e635811.png)
createSetterMethod()方法
![](https://img.haomeiwen.com/i4893685/895ad0e7e6336dbb.png)
createGetterMethod()方法
![](https://img.haomeiwen.com/i4893685/682eef4df130979b.png)
insertMethod方法, 很多的api都是不知道意思, 官方也没有提供api的文档(反正我没找到,继续找寻中...), 知道是这样就好啦,套着用吧
![](https://img.haomeiwen.com/i4893685/ff03cffeb827884b.png)
效果演示
![](https://img.haomeiwen.com/i4893685/536f3975e6c2b5a7.gif)
后记
个人感觉学会开发Studio的插件还是挺有用的, 总结一下, 学习的难点主要是几点:
没有官方文档(继续寻找中)
网上学习资料较少
可能会需要用到一些Java的GUI编程, 没有这方面开发经验的童鞋就比较吃力, 比如我,
但是"书山有路勤为径,学海无涯苦作舟",后续的话会去研究Java基础的一些GUI知识和继续深入了解IntelliJ IEDA的一些api,工作之余的话会重写写一篇文章。文中有哪里不对的还请不吝赐教。