#android #android-studio #exception #retrofit2
Вопрос:
Привет всем, у меня возникла проблема с моим модифицированным кодом при вызове 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.
Я сталкиваюсь с проблемой с приложением в рабочей среде, я получаю то же сообщение об исключении и в рабочей среде, и вызывается api, и я также вижу ответ, но на рабочем экране, не переходя на следующий экран, как это должно быть. Является ли эта проблема из-за java.lang.noSuchMethod Исключение это исключение или есть какая-то другая проблема с моим приложением в производстве. Если у кого-нибудь есть какое-либо возможное решение или предложение, пожалуйста, поделитесь. Это будет мне очень полезно, спасибо.
Комментарии:
1. Есть какое-нибудь решение по этому поводу?
2. @AndroidDev123 смотрите мой ответ ниже. Надеюсь, это сработает для вас.
Ответ №1:
Я столкнулся с аналогичной ошибкой в API 30 и com.squareup.okhttp3:okhttp:4.2.2
.
Проблема заключалась в том, что OkHttp использует отражение для доступа к некоторым частям основного Android SDK. Таким образом, OHTTP тесно связан с версией API.
В моем случае обновление com.squareup.okhttp3:okhttp:4.9.3
исправило проблему, но требуемая версия будет зависеть от вашего целевого SDK.
Более подробная информация здесь: https://github.com/amplitude/Amplitude-Android/issues/309