Annotation Processor

annotationProcessor和android-apt的功能是一样的,它们是替代关系。annotationProcessor是APT工具中的一种,他是google开发的内置框架,不需要引入,可以直接在build.gradle文件中使用。android-apt是由一位开发者自己开发的apt框架,随着Android Gradle 插件 2.2 版本的发布,间接的进行了替代。

 

涉及注解相关知识:

@Retention的取值范围如下(代表注解的保留位置):

RetentionPolicy.SOURCE 表示修饰的注解只在源码中保留,编译后就被遗弃了,也就是class文件中就不存在了。
RetentionPolicy.CLASS 表示修饰的注解保留到编译后的class文件,运行时就被遗弃。比如在运行时通过反射去获取这个注解,会发现是不存在的。
RetentionPolicy.RUNTIME 表示注解一直保留到运行时。

@Target:的取值范围如下(代表注解的作用目标)

@Target(ElementType.TYPE)——接口、类、枚举、注解
@Target(ElementType.FIELD)——字段、枚举的常量
@Target(ElementType.METHOD)——方法
@Target(ElementType.PARAMETER)——方法参数
@Target(ElementType.CONSTRUCTOR) ——构造函数
@Target(ElementType.LOCAL_VARIABLE)——局部变量
@Target(ElementType.ANNOTATION_TYPE)——注解
@Target(ElementType.PACKAGE)——包

@Document:该注解可以被包含在javadoc中
@Inherited:子类可以继承父类中的该注解

三方库依赖方式:

implementation:该依赖方式所依赖的库不会传递,只会在当前module中生效。
api:该依赖方式会传递所依赖的库,当其他module依赖了该module时,可以使用该module下使用api依赖的库。

compile已过时,已被 implementation 和api 取代

当我们依赖一些第三方的库时,可能会遇到com.android.support冲突的问题,就是因为开发者使用的compile或api依赖的com.android.support包与我们本地所依赖的com.android.support包版本不一样。

一、定义注解

在工程中添加一个java library类型的module,取名annotation

Android Studio -> file -> new module -> java library

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.SOURCE)
public @interface BindView {
    @IdRes int value();
}

备注:注解@IdRes 引用系统库,如果是jiavaLibrary需要单独添加引用

dependencies {
    implementation 'androidx.annotation:annotation:1.2.0'
}

二、定义注解处理器

新建一个module,取名为compiler,类型必须为java librar(因为有用到 javax.*下的类文件)

Android Studio -> file -> new module -> java library

新建一个类MyProcessor,这类必须继承至 AbstractProcessor

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


}

备注:注解处理器创建完毕后,需要创建注册目录,如果是手动创建,目录如下:

 文件里面内容为自己处理器的全路径path

 建

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值