解决Android DataBinding 与APT的冲突问题

APT已经过时了?

Android Gradle 2.3正在积极废弃android-apt,也就意味着APT已经过时。

之所以谈起这个新闻起源于一个让人无语的bug,如下图。

解决Android DataBinding 与APT的冲突问题_第1张图片
使用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'

大功告成!

参考连接

参考连接2

你可能感兴趣的:(解决Android DataBinding 与APT的冲突问题)