APT已经过时了?
Android Gradle 2.3正在积极废弃android-apt,也就意味着APT已经过时。
之所以谈起这个新闻起源于一个让人无语的bug,如下图。
使用Dagger2的项目,引入DataBinding后当Dagger2和DataBinding一起使用时,使用APT形式的项目会出现,DataBinding 包不存在的问题。当然DataBinding包不存在也可能是其他原因导致,这里是排除可能导致的原因后得出的结论。这个问题在Make Project、Run app之前不会有任何异常。排除其他原因后,答案是DataBinding和Dagger2使用APT插件时存在冲突。
问题原因找到了,如何解决呢?我们往下看!
如何切换成Annotation Processor?
旧代码(位于项目根根目录下的build.gradle):
dependencies {
classpath'com.android.tools.build:gradle:2.3.1'
classpath'com.neenbedankt.gradle.plugins:android-apt:1.4'
}
新代码
dependencies {
classpath'com.android.tools.build:gradle:2.3.1'
classpath'com.neenbedankt.gradle.plugins:android-apt:1.8'//解决1.4版本中与Dagger与DataBinding的冲突
}
旧代码(位于app目录下的build.gradle)
apt 'com.google.dagger:dagger-compiler:2.x.x'
新代码
annotationProcessor 'com.google.dagger:dagger-compiler:2.x.x'//解决与DataBinding的冲突
最后注释掉所有有gradle文件中所有应用apt插件的代码
//apply plugin: 'com.neenbedankt.android-apt'
大功告成!
网友评论