Android APT:Eclipse下APT使用

001概述

文章将介绍如何在eclipse下使用apt开发,结合JakeWharton大神的javapoet让apt开发飞起来。

002背景

栗子:同一个父类,子类继承完后,每次都要拷贝黏贴,然后重写,时间花得太不值(⊙o⊙)…

同样的还有创建{实体类}的时候,需要get、set,使用gson的时候还要@SerializedName("")等等都是比较花时间的。

Android APT:Eclipse下APT使用_第1张图片
图1

003构建

① 创建一个Android工程(当然Java工程也是可以的),如图:

Android APT:Eclipse下APT使用_第2张图片
工程结构

② 将JakeWharton大神的POET代码移植过来,在工程目录下创建META-INFO,如上图提示。

注意:javax.annotation.processing.Processor文件的内容是com.king.annotation.KingProcessor (KingProcessor extends AbstractProcessor),因为我们没有使用@AutoService(Processor.class)注解去自动生成 javax.annotation.processing.Processor,所以想让eclipse-apt识别到,就需要加入这个文件;大家不凡也可以去看JakeWharton大神的butterknife-7.0.1.jar包,其中也可以看到META-INFO文件夹,只是javax.annotation.processing.Processor的内容是大神自己的Processor。

Android APT:Eclipse下APT使用_第3张图片
对比图

③ 创建注解

Android APT:Eclipse下APT使用_第4张图片
注解代码

这边只对Class作用所以,Retention就直接使用CLASS类型

④ 创建Processor(DHModelProcessor)

这个类是最重要的类了^_^,其中使用到JakeWharton大神的POET,对POET框架不了解的可以先去熟悉下:javapoet

下面一个个讲怎么拼凑:

// 获取所有被DHModel注解的元素

for (Element element : roundEnv.getElementsAnnotatedWith(DHModel.class)) {

           DHModel model = element.getAnnotation(DHModel.class); -------------------------拿到注解对象

Android APT:Eclipse下APT使用_第5张图片
生成getURL方法,$T和$S分别对应类和字符串,重点就是这个renturn了,最后生成图1中的getURL方法
Android APT:Eclipse下APT使用_第6张图片
同样生成getType()、getClazz()、saveJsonType()方法
Android APT:Eclipse下APT使用_第7张图片
用了一个for循环控制了请求参数,生成doNet方法
Android APT:Eclipse下APT使用_第8张图片
这个生成Class,其中添加了一个构造函数,然后将所有的方法加入到这个Class构造器中
Android APT:Eclipse下APT使用_第9张图片
输出文件^_^

这里讲下需要注意的地方

<1> 例如我需要拿到一个Class,那么我们需要使用 ClassName,例如取个activity类:

ClassName mActivityClassName = ClassName.get("android.app", "Activity"); // Activity类

<2> $T$S要对应正确,不然会出错

<3> 巧用mMessager.printMessage(Diagnostic.Kind.ERROR, String.format(msg, args), e);来调试代码。

004打包

利用Eclipse---->export打jar包工具,生成jar包

Android APT:Eclipse下APT使用_第10张图片
打jar包

注意:重新打包的时候不要使用覆盖的方式,否则jar包会出问题,怀疑是编译器的问题。

005加入jar包

加打完的jar包放入主工程libs目录中,然后如下图点击Add JARs添加jar包:

Android APT:Eclipse下APT使用_第11张图片

006万事俱备

005步骤完成后,使用@DHModel(注解)

注解使用

最后重新编译工程,在你设置的包路径下会生成对应的代码:

Android APT:Eclipse下APT使用_第12张图片
【定义文件路径】中找到对应生成的代码

007成果

最终会看到自动生成好了的文件

Android APT:Eclipse下APT使用_第13张图片

你可能感兴趣的:(Android APT:Eclipse下APT使用)