ButterKnife 和 Dagger 2 冲突

ButterKnife and Dagger 2 Conflicts

目前有

compile "com.google.dagger:dagger:2.0.1"
apt "com.google.dagger:dagger-compiler:2.0.1"

compile "com.jakewharton:butterknife:8.8.1"
apt 'com.jakewharton:butterknife-compiler:8.8.1'

因此我的项目找不到

import com.google.common.base.Charsets;
import com.google.common.io.CharStreams;

如果我将两个 dagger 语句都切换为使用 compile 它会起作用,但是我的所有 robolectric 测试都会失败。有人有什么建议吗?

第一个评论你有相当过时的依赖 - 至少 2.x android gradle 插件使来自 Hugo 的 apt 插件过时了。另外,Dagger 版本现在接近 2.13。

这两个导入来自 Guava 库,它是 dagger 编译器的传递依赖。

所以只需添加testCompile "com.google.guava:guava:23.0",它很可能会得到解决,除非你有 Guava 版本的冲突,你应该更新它的解决策略。

解决方案:结果是在 IDE 中启用 annotationProcessing 导致了一堆问题,但关闭它后一切正常。