Android APT 自动生成代码实践
前言:都9102年了,我才接触到apt的东西,之前自己压根儿没往那儿想。一直都能见到作用在onCreate()方法上的@Override注解,一直以为是一种约定俗成的东西。直到遇到EventBus,也注意到了它的注解,仅仅觉得:呀,他也有注解,约定了这么这么用,真方便!
直到最近在努力提升技术栈时,才发现:注解是一门技术,而不仅仅是一个约定。可以提高编码效率的东西必须学习!
最近实践的时候参考了网上很多文章,参考着然后一句句代码敲下来,结果我的项目始终生成不了Java文件。然后忙了半天查找问题:不是androidx的问题,依赖的也都是同样的auto-service,然后把别人项目拉下来跑也没问题,我自己在别人项目上改也没问题,怎么就自己的工程不行呢?终于,在忙活了半天依旧找不到头脑后,我下班回家睡觉了。
第二天醒来,我的脑子里就一个想法:别是gradle升级的问题!!!!!然后就直接搜到了Android Gradle由4.x升级至5.0导致Apt项目失效 这篇文章!想解决很简单 添加 一个annotationProcessor "com.google.auto.service:auto-service:1.0-xxxxx"
就好,注意是 annotationProcessor !
接下来就把整个入门过程记录下来吧,有坑的地方会重点标出。本篇文章不需要你多高的技术,只要你是Android入门级就可以操作。
1、工程准备
新建工程,例如我这里工程名为APT。在工程中创建两个 java 的module,一个annotation用于声明注解,就是存放类似于@Override的这些东西。一个processor用于处理声明的注解。
1.1、创建annotation模块
点击 File -> New Module 在弹出的对话框中选择 Java Library,然后输入模块名annotation即可。然后我们新建注解类MyAnnotation。
如下所示(所有模块都包含了):
然后我们在MyAnnotation中编写如下代码:
package com.test.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.CLASS) //表示编译时的注解
@Target