使用OkHttp 3.9.0和Dagger 2.11 - 为什么我必须包含dagger-android2.x依赖项?

时间:2017-09-20 14:05:02

标签: android dagger-2 okhttp3 okhttp

我使用的是okhttp 3.8和dagger 2.11,效果很好。当我改为okhttp 3.9时,我得到了错误的javax.annotation.Nullable not found。

所以,幸运的是,我尝试了包含dagger-android2.x依赖项并修复了错误。

我明白如果你想使用像DaggerActivity这样的类,或者你想要注入活动或片段,你必须包含dagger.android包,但为什么我需要将它包含在OkHttp中才能与Dagger一起使用?

编辑:我做了更多的调查。 https://github.com/square/okhttp/commit/d4a9cf4772ae9d8991e58d934dea433798c9b8eb#diff-e88e53bd5c3b6fb1ba650f55b1261052R21

中的此更改

+ import javax.annotation.Nullable;

是问题。我必须包括:

实施'com.google.code.findbugs:jsr305:3.0.2'来修复错误

更新2:

我正在注入我的websocket监听器,我真的不需要这样做。这导致找不到ERROR javax.annotation.Nullable。我将我的代码更改为不注入websocketlistener,错误消失了,不再需要其他依赖项,错误完全是我的错。

1 个答案:

答案 0 :(得分:2)

您实际上不必包含dagger-android2.x依赖项。发生的事情是OkHttp 3.9现在使用javax.annotation.Nullabledagger-android2.x依赖在内部使用,因此,通过gradle merge也可用于OkHttp。

正如您所指出的那样,将compile 'com.google.code.findbugs:jsr305:3.0.2'添加到您的项目中就足够了。