Combate real y análisis de escenarios de aplicación APT en Android.

Primero, ¿qué es APT?

1.APT (Herramienta de procesamiento de anotaciones) es una herramienta para procesar anotaciones. Detecta archivos de código fuente para encontrar anotaciones en ellos y utiliza anotaciones para procesamiento adicional.

El procesador de anotaciones puede generar archivos fuente adicionales y otros archivos de acuerdo con la anotación en el archivo fuente al procesar la anotación (el contenido específico del archivo está determinado por el procesador de anotaciones).

El autor decide), APT también compilará el archivo fuente generado y el archivo fuente original, y generará un archivo de clase juntos. APT se basa principalmente en javac en el enlace de compilación de Java, estamos controlando

La herramienta del procesador aparecerá cuando ingrese javac en la plataforma. Esta es la entrada del controlador APT. En pocas palabras, el procesador se inicializará durante la fase de compilación y luego el código en el módulo actual se

El código se escanea una vez y luego se obtienen las anotaciones correspondientes, luego se llama al método de proceso y luego hacemos algunas operaciones de seguimiento de acuerdo con estas clases de anotaciones, como se muestra en la Figura 1.

Figura 1

2. Para comprender este proceso de manera más conveniente y precisa, necesitamos saber cómo se ve todo el proceso de compilación de Java, como se muestra en la Figura 2.

Figura 2

La imagen de arriba es un diagrama de flujo de compilación simple, y el compilador representa nuestro javac (compilador de programación en lenguaje Java). En realidad, a esta imagen debería faltarle un proceso, en el proceso de fuente -> cumplidor

Deberíamos agregar nuestro Procesador, Figura 3

La combinación de las dos imágenes es todo el proceso de compilación de Java. Todo el proceso de compilación es fuente (código fuente) -> procesador (procesador) -> generar (generación de archivos) -> javacompiler ->.

archivo de clase -> .dex (solo para Android)

3. Clases principales e interfaces en APT 4

Figura 4

Clases principales e interfaces Figura 5

Figura 5

4. Explicación del método central.

Entorno de procesamiento

Filer 就是文件流输出路径,当我们用AbstractProcess生成一个java类的时候,我们需要保存在Filer指定的目录下。

Messager 输出日志工具,需要输出一些日志相关的时候我们就要使用这个了。

Elements 获取元素信息的工具,比如说一些类信息继承关系等。

Types 类型相关的工具类,processor java代码不同的是,当process执行的时候,class的由于类并没有被传递出来,所以大部分都行都是用element来代替了,

所以很多类型比较等等的就会转化成type相关的进行比较了。

类型相关的都被转化成了一个叫TypeMirror,其getKind方法返回类型信息,其中包含了基础类型以及引用类型。

process

@AutoService(Processor.class)

public class MyProcess extends AbstractProcessor {

private Elements elementUtils;

private Filer filer;

Messager messager;

private Name simpleName;

@Override

public synchronized void init(ProcessingEnvironment processingEnvironment) {

super.init(processingEnvironment);

elementUtils = processingEnvironment.getElementUtils();

filer = proce

Supongo que te gusta

Origin blog.csdn.net/qq_18757557/article/details/128551941
Recomendado
Clasificación