OkHttp在Android中实例化时出错

时间:2016-05-16 11:34:33

标签: android okhttp

我遇到以下错误

java.lang.NoClassDefFoundError: okhttp3.internal.tls.OkHostnameVerifier

当我想使用 OkHttpClient 开发与数据库的连接时。

我在gradle中包含了以下依赖项;     compile 'com.squareup.okhttp3:okhttp:3.2.0'

2 个答案:

答案 0 :(得分:1)

要使OkHttp库正常工作,您必须在build.gradle文件中包含这两个依赖项:

compile 'com.squareup.okhttp3:okhttp:3.3.1'
compile 'com.squareup.okio:okio:1.8.0'

或者,您可以下载here AND OkHttp jar,并将其放在libs文件夹下。

有关详细信息,请访问Okio jarOkHttp page

答案 1 :(得分:1)

我没有足够的声望点将其作为评论发布。所以,我把它写成答案。其他答案对我没用。我的build.gradle中已经有okhttp3和okio依赖项。 这不是一个确切的答案,但对问题的分析,即使我有完全相同的问题。所以,我试着稍微调试一下。

Stacktrace:

java.lang.NoClassDefFoundError: okhttp3.internal.tls.OkHostnameVerifier
    at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:364)
    at okhttp3.OkHttpClient.<init>(OkHttpClient.java:151)

所以,我反编译我的APK并发现我的APK中没有OkHostnameVerifier类,即使它出现在source of Okhttp3中。因此,可能是gradle正在删除那些文件,将它们视为未使用的代码,这是一种误报。

但是如果我在build.gradle中启用minifyEnabled,它会修复该问题并将所有这些类文件保存在APK中。 所以,我认为这是proguard中的一个错误。