ClassCastException в производственной сборке после входа в приложение для AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 ClassCastException в производственной сборке после входа в приложение для Android

Сообщение Anonymous »

Я сталкиваюсь с исключением ClassCastException в своем приложении для Android, которое возникает после экрана входа в систему, когда приложение загружается в Play Store. Приложение работает нормально в разработке, но выходит из строя в рабочей среде.
Вот исключение, которое я получаю:

Код: Выделить всё

FATAL EXCEPTION: OkHttp ...
Process: , PID: 23630
F3.b: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | java.lang.ClassCastException
at A1.h.l(SourceFile:54)
at U4.b.onResponse(SourceFile:32)
at retrofit2.OkHttpCall$1.onResponse(SourceFile:11)
at F4.l.run(SourceFile:55)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.ClassCastException
at r0.a.s(SourceFile:1)
at t3.a.c(SourceFile:1)
at R3.c.b(SourceFile:21)
at D2.h.b(SourceFile:9)
at U4.b.onResponse(SourceFile:20)
at retrofit2.OkHttpCall$1.onResponse(SourceFile:11) 
at F4.l.run(SourceFile:55) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012)
Я проверил структуру проанализированного ответа, чтобы убедиться, что он соответствует ожидаемым классам модели. Кроме того, я удалил повторяющиеся реализации из зависимостей, но проблема осталась.
Что я пробовал:
Я попытался обработать исключение ClassCastException, изменив свой метод входа в систему, включив в него CompositeDisposable. Вот исходный код:

Код: Выделить всё

public static void login(LoginRequest loginRequest, ApiCallback apiCallback) {
RetrofitApiClient.getApiInstance().login(loginRequest)
.subscribe(new DisposableSingleObserver() {
@Override
public void onSuccess(@NonNull LoginResponse loginResponse) {
Log.d(TAG,"loginResponse :: "+ loginResponse.isStatus());
if (loginResponse.isStatus()) {
getSharedData().writeData(SharedData.SharedKeys.AUTH_USER, SharedData.SharedType.GSON, loginResponse.getUser());
}
if (apiCallback != null) {
apiCallback.onSuccess(loginResponse);
}
}

@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG, "login onError: ", e);
if (apiCallback != null) {
apiCallback.onError(e);
}
}
});
}
А вот модифицированная версия с использованием CompositeDisposable:

Код: Выделить всё

public static void login(LoginRequest loginRequest, ApiCallback apiCallback, CompositeDisposable compositeDisposable) {
DisposableSingleObserver disposable = RetrofitApiClient.getApiInstance().login(loginRequest)
.subscribeWith(new DisposableSingleObserver() {
@Override
public void onSuccess(@NonNull LoginResponse loginResponse) {
try {
Log.d(TAG, "loginResponse :: " + loginResponse.isStatus());
if (loginResponse.isStatus()) {
getSharedData().writeData(SharedData.SharedKeys.AUTH_USER, SharedData.SharedType.GSON, loginResponse.getUser());
}
if (apiCallback != null) {
apiCallback.onSuccess(loginResponse);
}
} catch (ClassCastException e) {
Log.e(TAG, "ClassCastException in onSuccess: ", e);
if (apiCallback != null) {
apiCallback.onError(e);
}
}
}

@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG, "login onError: ", e);
if (apiCallback != null) {
apiCallback.onError(e);
}
}
});

// Add disposable to the composite for proper disposal
compositeDisposable.add(disposable);
}
Фактический результат:
Несмотря на эти изменения, приложение по-прежнему аварийно завершает работу с исключением ClassCastException после экрана входа в систему при развертывании в Play Store.
Дополнительная информация:
Я использую Retrofit для вызовов API.
Структура ответа и классы модели были дважды проверены.
Требуется помощь:
Может ли кто-нибудь предоставить информацию о том, что может вызывает это ClassCastException в производстве, несмотря на то, что в разработке он работает нормально? Мы будем очень признательны за любые предложения по дальнейшей отладке или возможным исправлениям.


Подробнее здесь: https://stackoverflow.com/questions/790 ... ndroid-app
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ClassCastException в производственной сборке после входа в приложение для Android
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • ClassCastException в производственной сборке после входа в приложение для Android
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • ClassCastException в производственной сборке после входа в приложение для Android
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • ClassCastException в производственной сборке после входа в приложение для Android
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • ClassCastException в производственной сборке после входа в приложение для Android
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»