当前位置:   article > 正文

Android组件化APT使用与介绍_processingenv.getmessager() build不输出

processingenv.getmessager() build不输出

针对上篇讲的module之间的跳转问题, 这就出现了路由的概念了,应该上路由去帮助我们去做那些事

APT(Annatotion Processing Tool)

是一种处理注解的工具,它对源代码文件进行检测找出其中的注解(Annotation)  根据注解自动生成代码,如果想要自定义的注解处理器能够正常运行,必须要通过APT工具进行处理,也可以这么理解, 只有通过APT工具后,程序在编译期间注解解释器才能执行

 

通俗理解  根据规则  帮我们生成代码  生成类文件

现在动手来实现,新建个项目 APTTest

APT是注解处理器,那么先写个注解,创建一个java library  叫annotation,存放注解的,

  1. package com.example.annotation;
  2. import java.lang.annotation.ElementType;
  3. import java.lang.annotation.Retention;
  4. import java.lang.annotation.RetentionPolicy;
  5. import java.lang.annotation.Target;
  6. @Target(ElementType.TYPE)
  7. @Retention(RetentionPolicy.CLASS) // 要在编译时进行一些预处理操作。注解会在class文件中存在
  8. public @interface ARouter {
  9. String path();
  10. String group() default "";
  11. }

annotation library如下目录

然后在app中引入这个library

  1. // 依赖注解
  2. implementation project(':annotation')

再创建一个java library 注解处理器 compiler 这个是专门处理注解的

看下compiler中的build.gradle中配置

  1. apply plugin: 'java-library'
  2. dependencies {
  3. implementation fileTree(dir: 'libs', include: ['*.jar'])
  4. // As-3.4.1 + gradle5.1.1-all + auto-service:1.0-rc4
  5. compileOnly'com.google.auto.service:auto-service:1.0-rc4'
  6. annotationProcessor'com.google.auto.service:auto-service:1.0-rc4'
  7. // 引入annotation,让注解处理器-处理注解
  8. implementation project(':annotation')
  9. }
  10. // java控制台输出中文乱码
  11. tasks.withType(JavaCompile) {
  12. options.encoding = "UTF-8"
  13. }
  14. //jdk编译的版本是1.7
  15. sourceCompatibility = "7"
  16. targetCompatibility = "7"

其中

  1. compileOnly'com.google.auto.service:auto-service:1.0-rc4'
  2. annotationProcessor'com.google.auto.service:auto-service:1.0-rc4'

是Google给我们提供的注解处理器的一种服务,会生成一个文件,在build目录下生成文件

当然上面也引入了annotation 因为要处理这里的注解

现在在compiler中写个注解处理器类ARouterProcessor用来处理ARouter注解的,它继承此AbstractProcessor

在这个自定义的类上要添加几个注解

  1. // AutoService则是固定的写法,加个注解即可
  2. // 通过auto-service中的@AutoService可以自动生成AutoService注解处理器,用来注册
  3. // 用来生成 META-INF/services/javax.annotation.processing.Processor 文件
  4. @AutoService(Processor.class)
  5. // 允许/支持的注解类型,让注解处理器处理(新增annotation module)
  6. @SupportedAnnotationTypes({"
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/240042?site
推荐阅读
相关标签
  

闽ICP备14008679号