如何停止时间:亲吻。
如何时间旅行:阅读。
如何逃脱时间:音乐。
如何感受时间:写作。
如何释放时间:呼吸。
前言
Android使用注解生成器生成Java代码~
- 官方介绍:添加注释处理器。
接入流程
创建Annotation
关于反射的基础知识可见:第12章 元编程与注解、反射 《Kotlin 项目实战开发》
- 在Android Studio中创建一个
Java Library
,名称叫做x_annotation
。 x_annotation
的Gradle的配置如下:
apply plugin: 'java-library'
apply plugin: 'kotlin'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
sourceCompatibility = "7"
targetCompatibility = "7"
- 之后,在Library中定义一些注解。
@Target({
METHOD, CONSTRUCTOR})
@Retention(CLASS)
public @interface XAnnotation {
}
创建Compiler
- 在Android Studio中创建一个
Java Library
,名称叫做x_compiler
。
配置Gradle
x_compiler
的Gradle的配置如下:
apply plugin: 'java-library'
apply plugin: 'kotlin'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// JavaPoet is a Java API for generating .java source files.
// 源码:https://github.com/square/javapoet
implementation 'com.squareup:javapoet:1.12.1'
implementation project(':x_annotation')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
sourceCompatibility = "7"
targetCompatibility = "7"
注册Processor
手动注册
- 创建
javax.annotation.processing.Processor
- 创建文件夹:
mkdir -p src/main/resources/META-INF/services/
- 进入目录:
cd src/main/resources/META-INF/services/
- 创建文件:
touch javax.annotation.processing.Processor
- 在文件中增加Process的包名和类名:
com.notzuonotdied.flutter.x_compiler.XCompiler
- 创建文件夹:
➜