记录一下之前项目开发中遇到的一个Bug问题!
项目开发中的网络请求是公司大神用GO封装的,但是项目中也会用到OKHttp网络请求库,APP在Debug的时候没发现任何问题,签名后在Android7.0以上手机也运行正常,但是发现在5.0-6.0手机上会出现Bug问题,总是会报如下问题:
java.util.concurrent.ExecutionException: java.lang.AssertionError
at java.util.concurrent.FutureTask.report(FutureTask.java:94)
at java.util.concurrent.FutureTask.get(FutureTask.java:164)
at com.bumptech.glide.load.b.c.a.afterExecute(FifoPriorityThreadPoolExecutor.java:96)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1121)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
at com.bumptech.glide.load.b.c.a$a$1.run(FifoPriorityThreadPoolExecutor.java:118)
Caused by: java.lang.AssertionError
at com.android.okhttp.OkHttpClient.getDefaultSSLSocketFactory(OkHttpClient.java:664)
at com.android.okhttp.OkHttpClient.copyWithDefaults(OkHttpClient.java:620)
at com.android.okhttp.OkUrlFactory.open(OkUrlFactory.java:53)
at com.android.okhttp.OkUrlFactory.open(OkUrlFactory.java:48)
at com.android.okhttp.HttpHandler.openConnection(HttpHandler.java:39)
at java.net.URL.openConnection(URL.java:479)
at com.bumptech.glide.load.a.f$a.a(HttpUrlFetcher.java:141)
at com.bumptech.glide.load.a.f.a(HttpUrlFetcher.java:62)
at com.bumptech.glide.load.a.f.b(HttpUrlFetcher.java:44)
at com.bumptech.glide.load.a.f.a(HttpUrlFetcher.java:20)
at com.bumptech.glide.load.c.f$a.b(ImageVideoModelLoader.java:70)
at com.bumptech.glide.load.c.f$a.a(ImageVideoModelLoader.java:53)
at com.bumptech.glide.load.b.a.e(DecodeJob.java:170)
at com.bumptech.glide.load.b.a.c(DecodeJob.java:128)
at com.bumptech.glide.load.b.i.f(EngineRunnable.java:122)
at com.bumptech.glide.load.b.i.d(EngineRunnable.java:101)
at com.bumptech.glide.load.b.i.run(EngineRunnable.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)?
at java.lang.Thread.run(Thread.java:818)?
at com.bumptech.glide.load.b.c.a$a$1.run(FifoPriorityThreadPoolExecutor.java:118)?
搞了好久才发现,貌似是OKHttp和GO的包,对于获取默认的SSLSocketFactory实现不一样。
如果先调用Go的代码,在调用OKHttp的时候,就不能够获取到系统默认的SSLSocketFactory;但是如果先执行一次OKHttp或者创建一次实例之后,就可以了,好奇怪。
具体原因不甚了解,在此记录下。