android 添加java文件_Android 使用APT没有生成JAVA文件

APT(Annotation Processing Tool)即注解处理器,是一种处理注解的工具,确切的说它是javac的一个工具,它用来在编译时扫描和处理注解。注解处理器以Java代码(或者编译过的字节码)作为输入,生成.java文件作为输出。

简单来说就是在编译期,通过注解生成.java文件。

但是我在实现View的绑定的时候发现了一个问题,就是运行程序始终报错,就是说我的view为空,然后就是仔细的看了一下,发现没有生成Java文件,然后在网上找资料,找到了3种解决方案。

方案一

3bbe5e762692

R$CZG1EBP`JVT1$5TE@{(JM.png

打开Project Structure降低是Android Gradle及构建版本分别到3.3.2,4.10.1以下,生成的Java文件在app/build/generated/source/apt里面

分析问题过后,觉得降低版本应该不会是最好的方案,于是我就继续研究这个问题,然后通过查阅资料,发现原来是javax.annotation.processing.Processor没有自动生成,那么这个文件是做什么的呢??

在编译时,java编译器(javac)会去META-INF中查找实现了的AbstractProcessor的子类,并且调用该类的process函数,最终生成.java文件。其实就像activity需要注册一样,就是要到META-INF注册 ,javac才知道要给你调用哪个类来处理注解。

在以前,我们的通过@AutoService(Processor.class)注解把注解处理器Processor注册到META-INF/services中,这里的包名是META-INF/services/javax.annotation.processing.Processor那么找到了这个问题,就有下面两种解决方案。

方案二

它既然没有自动生成那么我们给它创建一个,文件目录如下:

3bbe5e762692

图片1.png

然后把我们的Processor类的全类名添加到这个文件中。

3bbe5e762692

图片2.png

终于编译并运行成功了,但是细心的人会发现,在app/build/generated/source/文件夹中,没有找到apt文件夹,生成的文件去哪里了呢??原来生成的文件不在那里,那在哪里呢??看图

3bbe5e762692

图片3.png

方案三

那么有人就说,我每写一个Processor就要在META-INF/services添加一句,很麻烦,那么简单的方法来了,在dependencies中添加annotationProcessor 'com.google.auto.service:auto-service:1.0-rc2'

3bbe5e762692

%P_V5RZJ%4NJ@P%T~${9J9P.png

希望和大家一起学习,一起进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值