解决 ButterKnife8.2.1 与 Dagger2.5 冲突

ButterKnife 使用详解

在Android Studio 使用的详情:
http://blog.csdn.net/ernest_kong/article/details/52262134

Dagger2.5 的使用

Android Project中有有两个build.gradle 文件
* project-level build.gradle
* module-level build.gradle

#### project-level build.gradle 配置

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’
}
}

#### module-level build.gradle 配置

dependencies {
compile ‘com.google.dagger:dagger:2.x’
apt ‘com.google.dagger:dagger-compiler:2.x’
}

当 ButterKnife8.2.1 遇见 Dagger2.5 时

当两个遇见时就冲突了。

原因:ButterKnife 和 Dagger 都是用 apt 进行 反射编译,在某一些类时产生冲突。

解决方案

  • 在 module-level build.gradle 中添加
    android {
    …..
    packagingOptions {
    exclude ‘META-INF/services/javax.annotation.processing.Processor’
    }
    …..
    }
  • 在 dependencies 中修改为
    dependencies {

    compile ‘com.jakewharton:butterknife:8.2.1’
    apt ‘com.jakewharton:butterknife-compiler:8.2.1’

    compile ‘com.google.dagger:dagger:2.5’
    provided ‘org.glassfish:javax.annotation:10.0-b28’
    // apt ‘com.google.dagger:dagger-compiler:2.5’
    // 把原来的apt 修改为provided
    provided ‘com.google.dagger:dagger-compiler:2.5’

    }

在做之前遇到的问题

  • 之前使用dagger2.2版本,还是编译不过,修改为 dagger2.5之后直接通过

你可能感兴趣的:(android,Android,Dagger)