20300.编码积累

Android Studio 插件开发总结

2016-08-30  本文已影响637人  字字珠玑

前言

在日常开发中,绝大多数的工作都是开发Creator,创建UI,初始化UI,绑定数据,重复的创建ViewHolder类,findViewById代码,能不能将这些重复工作自动化呢,在看了android-butterknife-zelezny之后,我找到了灵感,使用As插件就能完成这些琐碎重复的事情啊。

API说明

Logger

和Android的Log类非常相似,包含info函数,error函数,warn函数等等

BaseGenerateAction

@Overrideprotected boolean isValidForClass(PsiClass targetClass) {   
     return super.isValidForClass(targetClass);
}

用户调用该插件的时候,光标所在的类,该函数主要是让开发者验证操作

// project 即为当前的工程
// editor 没有什么用
// file: 当前操作的文件
@Override
protected boolean isValidForFile(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) {   
    return super.isValidForFile(project, editor, file);
}

用户调用该插件的时候,光标所在的类,该函数主要是让开发者验证操作

Psi文件

PsiElement

类似与xml中的Element概念,AS将所有的代码语法都进行了抽象化,PsiElement是下面的PsiClass,PsiCodeBlock等等的父类

PsiField

代表类中的字段属性

PsiClass

代表一个类

PsiFile

代表一个文件

PsiCodeBlock

比如有一个函数,他的函数体就是PsiCodeBlock

PsiStatement

函数中的每一行代码就是一个PsiStatement

PsiMethod

代表一个方法

PsiElementFactory

一个用来创建上述PsiElement的工厂

BaseGenerateAction

继承自AnAction,提供了isValidForClass, isValidForFile , actionPerformed等函数

FAQ

1. 在哪里可以看到插件开发所用到的api的文档啊

2. 导入已有的插件工程

导入plugin工程之后,有可能会无法编译,很多类都找不到,其实只要设置该Module的sdk就可以了,new sdk,选择idea安装目录 ,具体的可以参照这篇文章

3. 如何创建一个新的plugin工程

官方文档

Paste_Image.png

4. 如何将插件编译成jar包提供给别人安装

使用『prepare。。。。』就可以将plugin工程打成jar包,jar包的位置在工程的主目录下, 然后在Android studio中选择install from disk安装就可以了


Paste_Image.png Paste_Image.png

5. 如何打印日志,查看日志

  1. 创建log对象
    protected static final Logger log = Logger.getInstance(xxx.class);
  2. 点击『show
    log in finder』,会打开一个目录,里面有很多的log文件,你在plugin工程中使用Logger.info打印的日志都会存储在该log文件中,打开即可
Paste_Image.png

6. 如何配置Action

什么是Action?

在下图的plugin.xml中,可以配置Action


Paste_Image.png

Incorrect statement 异常

记住,在AS中 ,Statement仅仅代表一行代码,可能表述不准确,举个例子

int x = 10; 这是一个PsiStatement
int x = 10;
int y = 10;
这就不是一个PsiStatement了

参考

  1. Intellij IDEA插件开发入门
  2. 初试IDEA插件开发
  3. 自己动手写IDEA plugin – PubEditor (1) Hello, world
  4. IntelliJ Platform SDK Documentation
上一篇下一篇

猜你喜欢

热点阅读