square/okhttp

Android crash randomly java.lang.ClassNotFoundException: Didn't find class "android.net.ssl.SSLSockets" on path: DexPathList

Closed this issue · 2 comments

I have encountered crash randomly in Android when using release build. Crash log is listed below

       Caused by java.lang.ClassNotFoundException: Didn't find class "android.net.ssl.SSLSockets" on path: DexPathList[[zip file "/data/app/jp.aocca.app-aNLL99geeCYs0djV0O-FyQ==/base.apk"],nativeLibraryDirectories=[/data/app/jp.aocca.app-aNLL99geeCYs0djV0O-FyQ==/lib/arm, /data/app/jp.aocca.app-aNLL99geeCYs0djV0O-FyQ==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib]]
   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
   at okhttp3.internal.platform.android.Android10SocketAdapter.matchesSocket(Android10SocketAdapter.kt:37)
   at okhttp3.internal.platform.Android10Platform.configureTlsExtensions(Android10Platform.kt:51)
   at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:375)
   at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:337)
   at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:209)
   at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)
   at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
   at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)
   at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)
   at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
   at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
   at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
   at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
   at sns.master.api.ApiClient$1.intercept(ApiClient.java:89)
   at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
   at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
   at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
   at java.lang.Thread.run(Thread.java:764)

Environment:

  • okhttp version 4.9.3
  • minSdkVersion 29
  • targetSdkVersion 34
  • build release config: release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    (My proguard-rules.pro is empty)
  • com.android.tools.build:gradle:7.4.0
  • multiDexEnabled true

That class was added in API 29 / Android 10 - https://developer.android.com/reference/android/net/ssl/SSLSockets

What device reported the error?

It's presumably one of

  • a bug causing use of the Android10Platform on Android API < 29
  • the device is missing android.net.ssl.SSLSockets
  • something else hiding this problem

Without a repro, we can't help. But more information might explain the issue.

It's also possible there was a bug in 4.9.3 that is now fixed.

If you can get this on a device < API 29, with OkHttp 5, then happy to re-open.