| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android组件化设计2 --- 自定义注解处理器(APT) -> 正文阅读 |
|
[移动开发]Android组件化设计2 --- 自定义注解处理器(APT) |
先把图放上来 在组件之前没有依赖的情况下,相互调用,那么可以通过类加载的方法,例如app壳想要调起注册模块,那么可以拿到注册模块的RegisterActivity的全类名,通过类加载的方式启动
或者可以通过注册路由表的方式,将所有的Activity的类信息注册到全局的Map中,如果存在成百的Actiivty,需要每个Activity手动去注册。 那么有没有一种方式,在编译的过程中就能拿到全部的类信息,注册到路由表中,避免手动注册这种方式 APT是注解处理工具,用于编译期在源代码中查找注解,根据注解生成新的类 函数;像Eventus、ButterKnife、ARouter都是编译期生成新的类,像EventBus是采用传统的生成代码方式,直接写字符串生成 传统方式
而像ButterKnife、ARouter采用的是JavaPoet方式,引入了面向对象的思想,跟传统方式相反,不如传统方式的可读性强 1 定义路由注解
Kotlin中的注解,跟Java中的注解类似,在自定义注解时,需要声明元注解; 其中Retention代表注解存在的时期,SOURCE(源码时期)、BINARY(编译期,跟Java区分,Java编译期为Class)、RUNTIME(运行时) Target为声明作用的对象,TYPE(类、接口等)、FUNCTION(函数,但不包含构造方法)、CONSTRUCTOR(构造方法)、PROPERTY_GETTER / PROPERTY_SETTER(get set方法)、FIELD(属性) 2 注解处理器 APT Compiler在声明注解之后,需要注解处理器来处理注解,在系统编译时,会从全部的代码中查找自定义的注解,生成代码,那么注解处理器相当于一个服务,在后台运行,检测代码,因此需要做一些配置 layout_compiler # build.gradle
谷歌的AutoService可以在编译时在后台检测代码,查找自定义的注解 3 注解处理前的初始化配置
AbstractProcessor是注解处理器,后续会有一个专门的章节介绍,配合编译的过程。 当一个类被注解修饰之后,AnnotationProcessor需要拿到这个类的信息以便于生成代码,因此需要创建一些能够获取类信息的工具,ProcessingEnvironment中,存在我们想要的工具
在app壳工程中,使用注解,那么在注解处理器中(lay_compiler)怎么拿到app壳工程的参数信息呢,那么在app壳中通过Gradle向注解处理器传递参数
AnnotationProcessor # init
通过ProcessingEnvironment获取options,通过key来获取value,将参数从message打印出来 这样,注解处理器的初始化操作就完成,如果app壳中想要使用我们自定义的注解处理器,那么就需要依赖 app壳 # build.gradle
踩坑:创建的注解处理器没有工作你以为这样就可以完成了吗,错误?,这里踩了一个坑,导包依赖之后,无论怎么编译也进不到初始化方法中 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 13:03:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |