我正在尝试使用数据绑定和Dagger 2(版本2.11以及新的Android注入功能)。如果我从我的项目中取出数据绑定,那么我的Dagger 2设置工作正常。如果我拿出Dagger 2,那么我的数据绑定设置工作正常。
我的匕首依赖关系如下:
compile "com.google.dagger:dagger-android-support:2.11"
apt "com.google.dagger:dagger-compiler:2.11"
apt "com.google.dagger:dagger-android-processor:2.11"
当我尝试构建时,我在编译任务期间收到以下错误:
> java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
看起来这个问题与Guava依赖关系有关(Dagger 2编译器和处理器都依赖于com.google.guava:guava:21.0),如果我在我的app build.gradle中明确列出了这个依赖关系: / p>
compile 'com.google.guava:guava:21.0'
...然后项目现在将编译。但看起来guava 21是使用Java 8编译的,现在我在尝试运行应用程序时遇到以下错误:
Error:Error converting bytecode to dex:
Cause: Dex cannot parse version 52 byte code.
This is caused by library dependencies that have been compiled using Java 8 or above.
现在有一个与番石榴兼容的Android版本:
compile 'com.google.guava:guava:22.0-android'
但是如果我将它添加到我的依赖项中,那么Dagger 2代码生成将不再有效:
java.lang.NoSuchMethodError: com.google.common.collect.SetMultimap.forEach(Ljava/util/function/BiConsumer;)
有人能为此建议解决方案吗?
答案 0 :(得分:1)
似乎我比较复杂的事情。仅升级apt番石榴依赖性解决了这个问题。我的最终配置是:
{{1}}