【问题标题】:unable to load android socket classes java.lang.NoSuchMethodException: com.android.org.conscrypt.OpenSSLSocketImpl.setUseSessionTickets [boolean]无法加载 android 套接字类 java.lang.NoSuchMethodException:com.android.org.conscrypt.OpenSSLSocketImpl.setUseSessionTickets [boolean]
【发布时间】:2021-11-18 10:29:23
【问题描述】:

大家好,我在 api 调用上遇到了我的改造代码的问题,我在下面发布了堆栈跟踪,请看一下:

    Accessing hidden method Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setUseSessionTickets(Z)V (greylist-max-q,core-platform-api, reflection, denied)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp: unable to load android socket classes
2021-09-25 19:02:08.588 30949-30949/W/OkHttp: java.lang.NoSuchMethodException: com.android.org.conscrypt.OpenSSLSocketImpl.setUseSessionTickets [boolean]
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at java.lang.Class.getMethod(Class.java:2072)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at java.lang.Class.getDeclaredMethod(Class.java:2050)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.android.AndroidSocketAdapter.<init>(AndroidSocketAdapter.kt:34)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.android.StandardAndroidSocketAdapter.<init>(StandardAndroidSocketAdapter.kt:31)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.android.StandardAndroidSocketAdapter$Companion.buildIfSupported(StandardAndroidSocketAdapter.kt:57)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.android.StandardAndroidSocketAdapter$Companion.buildIfSupported$default(StandardAndroidSocketAdapter.kt:50)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.AndroidPlatform.<init>(AndroidPlatform.kt:44)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.AndroidPlatform$Companion.buildIfSupported(AndroidPlatform.kt:239)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.Platform$Companion.findPlatform(Platform.kt:211)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.Platform$Companion.access$findPlatform(Platform.kt:179)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.internal.platform.Platform.<clinit>(Platform.kt:180)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.OkHttpClient.<init>(OkHttpClient.kt:219)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at okhttp3.OkHttpClient$Builder.build(OkHttpClient.kt:955)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at .ui.retroPack.RetrofitClient.getClient(RetrofitClient.java:35)
2021-09-25 19:02:08.588 30949-30949/W/OkHttp:     at .ui.retroPack.RetrofitClient.getAPIService(RetrofitClient.java:52)
2021-09-25 19:02:08.588 30949-30949/

这个 java.lang.NoSuchMethodException: 仅在第一次与服务器建立连接时发生,尽管 api 仍然获得成功响应并且在调试构建中一切正常,当我再次点击 api 时它没有在 android studio logcat 中显示相同的异常消息。

我在生产中遇到了应用程序的问题,我在生产中也收到了相同的异常消息,并且正在调用 api,我也可以看到响应,但是在生产屏幕中没有按应有的方式移动到下一个屏幕。这个问题是因为 java.lang.NoSuchMethodException 这个异常还是我的应用程序在生产中存在其他问题。如果有人有任何可能的解决方案或建议,请分享。对我有很大帮助,谢谢。

【问题讨论】:

  • 有什么解决办法吗?
  • @AndroidDev123 在下面看到我的回答。希望它对你有用。

标签: android android-studio exception retrofit2


【解决方案1】:

我在 API 30 和 com.squareup.okhttp3:okhttp:4.2.2 上遇到了类似的错误。

问题在于 OkHttp 使用反射来访问核心 Android SDK 的某些部分。所以 OkHttp 与 API 版本是强耦合的。

在我的情况下,升级到 com.squareup.okhttp3:okhttp:4.9.3 解决了这个问题,但所需的版本将取决于您的目标 SDK。

更多信息在这里: https://github.com/amplitude/Amplitude-Android/issues/309

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 2015-03-18
    相关资源
    最近更新 更多