背景
APT支持kotlin
解决方式
- 使用kapt
集成的时候使用
apply plugin: 'kotlin-kapt'
repositories {
mavenCentral()
}
dependencies {
kapt project(path: ':block-processor')
// annotationProcessor project(path: ':block-processor')
}
- 修改block-processor的实现.kotlin转换成字节码可能会生成一些额外的东西,做好排错处理.
if (typeSet.contains(el.type.tsym.name.toString().toLowerCase())) {
list.add(preName + "." + (el).getSimpleName().toString());
}
例如这里遍历对象的时候,判断对象是不是需要处理的类型再放入集合.
项目依赖
-
process如果需要使用jdk里面的对象
compileOnly files(org.gradle.internal.jvm.Jvm.current().getToolsJar()) -
process如果不想手动生成注册文件
compileOnly 'com.google.auto.service:auto-service:1.0-rc4'然后在代码头上加上注解 @AutoService(Processor.class)
@AutoService(Processor.class) public class StatisticsProcessor extends AbstractProcessor {他会自动帮我们生成注册文件.
这里也有意思,可以思考下@AutoService的实现原理.