我的应用程序在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();
答案 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 {`