You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用上线后登录环节出现ClassCastException崩溃问题

Android应用开发环境正常,Play Store发布后登录跳转ClassCastException崩溃

开发环境下应用运行无问题,但上传至Play Store后,登录页面跳转时会因ClassCastException崩溃。

异常信息

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)

已尝试的解决方法

  • 核对API响应结构与模型类的字段、类型,确认匹配
  • 移除依赖中的重复实现,避免类加载冲突
  • 修改登录方法引入CompositeDisposable,并在onSuccess中添加try-catch捕获ClassCastException:

原始登录代码

public static void login(LoginRequest loginRequest, ApiCallback apiCallback) {
    RetrofitApiClient.getApiInstance().login(loginRequest)
            .subscribe(new DisposableSingleObserver<LoginResponse>() {
                @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<LoginResponse> disposable = RetrofitApiClient.getApiInstance().login(loginRequest)
            .subscribeWith(new DisposableSingleObserver<LoginResponse>() {
                @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);
}

实际结果:修改后部署到Play Store,崩溃问题仍然存在。

补充信息

  • 使用Retrofit进行API调用
  • 已反复核对API响应JSON结构与LoginResponse、User等模型类的字段类型、名称

求助需求

  1. 为何开发环境正常,生产环境会触发该ClassCastException?
  2. 请提供进一步的调试方向或修复建议。

内容的提问来源于stack exchange,提问作者Meghan patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 01:22:39