美文网首页
解决Android DataBinding 与APT的冲突问题

解决Android DataBinding 与APT的冲突问题

作者: EboyWang | 来源:发表于2017-05-31 14:26 被阅读224次

    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'

    大功告成!

    参考连接

    参考连接2

    相关文章

      网友评论

          本文标题:解决Android DataBinding 与APT的冲突问题

          本文链接:https://www.haomeiwen.com/subject/sbxjfxtx.html