OkHttp 4.3.1 emits log spam on Android, even when using it in trivial way.
Example code:
Disposable disposable = Single.fromCallable(() ->
new OkHttpClient().newCall(new Request.Builder()
.url("https://raw.githubusercontent.com/square/okhttp/master/README.md")
.get()
.build())
.execute()
.body()
.string()
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
textView::setText,
failure -> textView.setText(Log.getStackTraceString(failure))
);
This emits:
I: Rejecting re-init on previously-failed class java.lang.Class<okhttp3.internal.platform.ConscryptPlatform$configureTrustManager$1>: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/conscrypt/ConscryptHostnameVerifier;
I: at okhttp3.internal.platform.android.SocketAdapter okhttp3.internal.platform.android.ConscryptSocketAdapter$Companion.buildIfSupported() (ConscryptSocketAdapter.kt:62)
I: at void okhttp3.internal.platform.AndroidPlatform.<init>() (AndroidPlatform.kt:44)
I: at okhttp3.internal.platform.Platform okhttp3.internal.platform.AndroidPlatform$Companion.buildIfSupported() (AndroidPlatform.kt:212)
I: at okhttp3.internal.platform.Platform okhttp3.internal.platform.Platform$Companion.findPlatform() (Platform.kt:207)
I: at okhttp3.internal.platform.Platform okhttp3.internal.platform.Platform$Companion.access$findPlatform(okhttp3.internal.platform.Platform$Companion) (Platform.kt:169)
I: at void okhttp3.internal.platform.Platform.<clinit>() (Platform.kt:170)
I: at void okhttp3.OkHttpClient.<init>(okhttp3.OkHttpClient$Builder) (OkHttpClient.kt:220)
I: at void okhttp3.OkHttpClient.<init>() (OkHttpClient.kt:212)
I: at java.lang.String okhttp.conscrypt.issue.MainActivity.lambda$onCreate$0() (MainActivity.java:28)
I: at java.lang.Object okhttp.conscrypt.issue.-$$Lambda$MainActivity$HFmP7xhC1oUdC6d5U0mKIdLTGns.call() (lambda:-1)
I: at void io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(io.reactivex.SingleObserver) (SingleFromCallable.java:44)
I: at void io.reactivex.Single.subscribe(io.reactivex.SingleObserver) (Single.java:3666)
I: at void io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run() (SingleSubscribeOn.java:89)
I: at void io.reactivex.Scheduler$DisposeTask.run() (Scheduler.java:578)
I: at void io.reactivex.internal.schedulers.ScheduledRunnable.run() (ScheduledRunnable.java:66)
I: at java.lang.Object io.reactivex.internal.schedulers.ScheduledRunnable.call() (ScheduledRunnable.java:57)
I: at void java.util.concurrent.FutureTask.run() (FutureTask.java:237)
I: at void java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run() (ScheduledThreadPoolExecutor.java:272)
I: at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1133)
I: at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:607)
I: at void java.lang.Thread.run() (Thread.java:761)
I: Caused by: java.lang.ClassNotFoundException: Didn't find class "org.conscrypt.ConscryptHostnameVerifier" on path: DexPathList[[zip file "/data/app/okhttp.conscrypt.issue-2/base.apk"],nativeLibraryDirectories=[/data/app/okhttp.conscrypt.issue-2/lib/x86, /system/lib, /vendor/lib]]
I: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
I: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
I: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I: at okhttp3.internal.platform.android.SocketAdapter okhttp3.internal.platform.android.ConscryptSocketAdapter$Companion.buildIfSupported() (ConscryptSocketAdapter.kt:62)
I: at void okhttp3.internal.platform.AndroidPlatform.<init>() (AndroidPlatform.kt:44)
I: at okhttp3.internal.platform.Platform okhttp3.internal.platform.AndroidPlatform$Companion.buildIfSupported() (AndroidPlatform.kt:212)
I: at okhttp3.internal.platform.Platform okhttp3.internal.platform.Platform$Companion.findPlatform() (Platform.kt:207)
I: at okhttp3.internal.platform.Platform okhttp3.internal.platform.Platform$Companion.access$findPlatform(okhttp3.internal.platform.Platform$Companion) (Platform.kt:169)
I: at void okhttp3.internal.platform.Platform.<clinit>() (Platform.kt:170)
I: at void okhttp3.OkHttpClient.<init>(okhttp3.OkHttpClient$Builder) (OkHttpClient.kt:220)
I: at void okhttp3.OkHttpClient.<init>() (OkHttpClient.kt:212)
I: at java.lang.String okhttp.conscrypt.issue.MainActivity.lambda$onCreate$0() (MainActivity.java:28)
I: at java.lang.Object okhttp.conscrypt.issue.-$$Lambda$MainActivity$HFmP7xhC1oUdC6d5U0mKIdLTGns.call() (lambda:-1)
I: at void io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(io.reactivex.SingleObserver) (SingleFromCallable.java:44)
I: at void io.reactivex.Single.subscribe(io.reactivex.SingleObserver) (Single.java:3666)
I: at void io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run() (SingleSubscribeOn.java:89)
I: at void io.reactivex.Scheduler$DisposeTask.run() (Scheduler.java:578)
I: at void io.reactivex.internal.schedulers.ScheduledRunnable.run() (ScheduledRunnable.java:66)
I: at java.lang.Object io.reactivex.internal.schedulers.ScheduledRunnable.call() (ScheduledRunnable.java:57)
I: at void java.util.concurrent.FutureTask.run() (FutureTask.java:237)
I: at void java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run() (ScheduledThreadPoolExecutor.java:272)
I: at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1133)
I: at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:607)
I: at void java.lang.Thread.run() (Thread.java:761)