Android APT从入门到实战

  • APT是什么?有什么用?

APT(Annotation Processing Tool)即注解处理器,在编译的时候可以处理注解然后搞一些事情,也可以在编译时生成一些文件之类的。ButterKnife和EventBus都使用了APT技术,如果不会APT技术就很难看懂这两个框架的源码。

tempImage1629265217303.jpeg

  • 实现效果

我们来实现一个简单的功能,只要在任何类的成员变量上添加一个 @Print注解,就可以动态生成一个方法,然后把成员变量的变量名输出:

10.png

动态生成的类大概长这样:

11.png

  • 整理思路

  1. 首先我们需要创建两个JavaLibrary
  2. 一个用来定义注解,一个用来扫描注解
  3. 获取到添加注解的成员变量名
  4. 动态生成类和方法用IO生成文件
  • 实战

  • 创建一个空项目

1.png

  • 创建两个JavaLibrary

  1. 注解的Lib: apt-annotation
  2. 扫描注解的Lib: apt-processor

2.png

3.png

  • 创建完之后

4.png

  • app模块依赖两个Library

implementation project(path: ':apt-annotation')
annotationProcessor project(path: ':apt-processor')

8.png

  • 注解Lib中创建一个注解类

如果还不会自定义注解的同学,可以先去看我之前写的一篇Java自定义注解入门到实战

@Retention(RetentionPolicy.CLASS)
@Target(ElementType.FIELD)
public @interface Print {
   

}

12.png

  • 扫描注解的Lib添加依赖

dependencies {
   
    //自动注册,动态生成 META-INF/...文件
    implementation 'com.google.auto.service:auto-service:1.0-rc6'
    annotationProcessor 'com.google.auto.service:auto-service:1.0-rc6'
    //依赖apt-annotation
    implementation project(path: ':apt-annotation')
}
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值