Android|Android APT:Eclipse下APT使用

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

002背景 栗子:同一个父类,子类继承完后,每次都要拷贝黏贴,然后重写,时间花得太不值(⊙o⊙)…
同样的还有创建{实体类}的时候,需要get、set,使用gson的时候还要@SerializedName("")等等都是比较花时间的。
Android|Android APT:Eclipse下APT使用
文章图片
图1 003构建 ① 创建一个Android工程(当然Java工程也是可以的),如图:
Android|Android APT:Eclipse下APT使用
文章图片
工程结构 ② 将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|Android APT:Eclipse下APT使用
文章图片
对比图 ③ 创建注解
Android|Android APT:Eclipse下APT使用
文章图片
注解代码 这边只对Class作用所以,Retention就直接使用CLASS类型
【Android|Android APT:Eclipse下APT使用】④ 创建Processor(DHModelProcessor)
这个类是最重要的类了^_^,其中使用到JakeWharton大神的POET,对POET框架不了解的可以先去熟悉下:javapoet
下面一个个讲怎么拼凑:
// 获取所有被DHModel注解的元素

for (Element element : roundEnv.getElementsAnnotatedWith(DHModel.class)) {
DHModel model = element.getAnnotation(DHModel.class); -------------------------拿到注解对象
Android|Android APT:Eclipse下APT使用
文章图片
生成getURL方法,$T和$S分别对应类和字符串,重点就是这个renturn了,最后生成图1中的getURL方法 Android|Android APT:Eclipse下APT使用
文章图片
同样生成getType()、getClazz()、saveJsonType()方法 Android|Android APT:Eclipse下APT使用
文章图片
用了一个for循环控制了请求参数,生成doNet方法 Android|Android APT:Eclipse下APT使用
文章图片
这个生成Class,其中添加了一个构造函数,然后将所有的方法加入到这个Class构造器中 Android|Android APT:Eclipse下APT使用
文章图片
输出文件^_^ 这里讲下需要注意的地方
<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|Android APT:Eclipse下APT使用
文章图片
打jar包 注意:重新打包的时候不要使用覆盖的方式,否则jar包会出问题,怀疑是编译器的问题。
005加入jar包 加打完的jar包放入主工程libs目录中,然后如下图点击Add JARs添加jar包:
Android|Android APT:Eclipse下APT使用
文章图片
006万事俱备 005步骤完成后,使用@DHModel(注解)
Android|Android APT:Eclipse下APT使用
文章图片
注解使用 最后重新编译工程,在你设置的包路径下会生成对应的代码:
Android|Android APT:Eclipse下APT使用
文章图片
【定义文件路径】中找到对应生成的代码 007成果 最终会看到自动生成好了的文件
Android|Android APT:Eclipse下APT使用
文章图片

    推荐阅读