在项目中使用了Retrofit + RxJava,最近测试提了个bug,说在低版本的手机会直接闪退,以下是闪退的log
05-08 19:14:15.386 28103-28103/com.pd.user E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.pd.user, PID: 28103
java.lang.NoClassDefFoundError: okhttp3.OkHttpClient
at com.pd.user.net.OkHttpClientManager.(OkHttpClientManager.java:50)
at com.pd.user.net.OkHttpClientManager.(OkHttpClientManager.java:40)
at com.pd.user.net.OkHttpClientManager$SingLetonHolder.(OkHttpClientManager.java:72)
at com.pd.user.net.OkHttpClientManager.getInstance(OkHttpClientManager.java:77)
at com.pd.user.activity.MainActivity.initData(MainActivity.java:196)
at com.pd.user.activity.MainActivity.onCreate(MainActivity.java:75)
at android.app.Activity.performCreate(Activity.java:5312)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2552)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2653)
at android.app.ActivityThread.access$800(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5883)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
at dalvik.system.NativeStart.main(Native Method)
在查找问题之后,发现是Android系统从哪个版本开始,不记得了,不是4点几就是5.0,内部网络开始使用okhttp,而之前使用的是httpurlconnection和httpclient,所以以前的版本不能直接使用okhttp,要导入jar包
所以!在低版本中及时你在Gradle中写了
compile 'com.squareup.okhttp3:okhttp:3.3.1'
一样会报错的!!!!!!!!!!!!!!!!!!!!!!!!!
因为系统中找不到你要的类。
所以要兼容低版本就要手动导入okhttp的jar包,导入后完美解决问题,Problem solve!!