以下棒棒糖设备中的Okhttp网络库中的例外情况

时间:2016-06-29 12:11:46

标签: android

我的应用程序在Lollipop设备上运行良好。但是,使用API​​低于Lollipop的设备时出错。

我正在使用Okhttp进行网络操作,Okhttp发出以下错误:

Caused by: java.lang.NoClassDefFoundError: okhttp3.HttpUrl$Builder
     at okhttp3.HttpUrl.parse(HttpUrl.java:642)
     at okhttp3.Request$Builder.url(Request.java:140)

网络操作未在Lollipop前设备中运行,但在Lollipop(或更高版本)中运行良好。

我使用以下代码来调用web api

Request request = new Request.Builder().url(url).build();
OkHttpClient copy = client.newBuilder().readTimeout(20, TimeUnit.SECONDS).build();
Response response = copy.newCall(request).execute();
System.out.println("Response completed: " + response);
return  response.body().string();

2 个答案:

答案 0 :(得分:0)

原因可能是proguard对okhttp代码进行了模糊处理。

如果您使用的是proguard-rules.pro,请确保已将这些规则添加到-keepattributes Signature -keepattributes Annotation -keep class okhttp3.** { ; } -keep interface okhttp3.* { ; } -dontwarn okhttp3.* 文件中,如上所述here

A -> B -> C

答案 1 :(得分:0)

当您遇到此类错误时,使用MultiDexApplication扩展您的应用程序类,这将删除错误。“

public class Globals扩展了MultiDexApplication {`