Android Studio 中使用 Annotation Processor

什么是APT?

   APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,使用Annotation进行额外的处理。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源文件和原来的源文件,将它们一起生成class文件。

使用背景:

      随着Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为 annotationProcessor  的功能来完全代替  android-apt ,自此android-apt  作者在官网发表声明证实了后续将不会继续维护  android-apt ,并推荐大家使用 Android 官方插件annotationProcessor。

注解处理器(Annotation processing)

可以给指定的类,或者所有类(不写className)传入参数

更新: 使用annotationProcessor 引用的类似乎在annotationProcessorOptions是找不到的!!知道解决方案的麻烦回复下……跪谢

android {
...
    defaultConfig {
    ...
        javaCompileOptions { 
            annotationProcessorOptions {
                className 'com.example.MyProcessor'

		// Arguments are optional.
                arguments = [ foo : 'bar' ]
            }
        }
    }
    ...
}

如果你仅需要在编译时使用注解处理器,在生成apk的时候不包含注解处理器的代码,你可以使用annotationProcessor依赖

dependencies {
    compile 'com.google.dagger:dagger:2.0'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
}

你也可以请求在特定的 Variant中使用

debugAnnotationProcessor 'com.google.dagger:dagger-compiler:2.0'

   

Auto Service:

      我们在写Annotation Processor的时候,需要添加META-INF/services/javax.annotation.processing.Processor 文件,google提供了一个第三方库使我们免除这部分麻烦:

      https://github.com/google/auto/tree/master/service

我们仅仅需要在gradle中添加依赖(版本请查看项目确定)

compile 'com.google.auto.service:auto-service:1.0-rc2'

然后在我们的Processor中添加一个注解:

@AutoService(Processor.class)
....
public class TestProcessor extends AbstractProcessor {......

编译时,会自动生成META-INF文件。

      PS:在学习ARouter时研究半天没弄明白到底为什么没写META-INF文件,最后发现原来是引用了这个库……

转载于:https://my.oschina.net/zzxzzg/blog/855628

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值