android - 获取 `java.lang.AssertionError: java.lang.NoSuchFieldException: HTTP_1_0`

标签 android proguard

在我的项目中,我正在使用 RxJava 执行 API 调用。
没有proguard,它运行良好。但是当我应用 proguard 它给出 java.lang.AssertionError: java.lang.NoSuchFieldException: HTTP_1_0onError(e: Throwable)的订阅者。

我申请了-keepclassmembers enum * { *; }在我的proguard中以防止混淆。

API 调用

 fun latestPosts(): Subscription {
        return service.latestPosts
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(APICallSubscriber(presenterContract, ApiIndex.POSTS))
    }

订户

class APICallSubscriber<T>(private val callback: BasePresenterContract,
                           private val apiIndex: String) : Subscriber<Response<T>>() {

    override fun onCompleted() {

    }

    override fun onError(e: Throwable) {
        Log.d("HomeTest", "${e}")
    }

    override fun onNext(response: Response<T>) {
        val jsonObject = App.gson().toJsonTree(response).asJsonObject
        val responseCode = jsonObject
                .get(PayloadKeys.RAW_RESPONSE).asJsonObject
                .get(PayloadKeys.CODE).asInt
        Log.d("HomeTest", "$jsonObject")
        val body: JsonElement? = jsonObject.get(PayloadKeys.BODY)
        if (body != null) {
            val responseBody = body.asJsonObject
            callback.onNetworkRequestCompletedWith(responseBody, responseCode, apiIndex)
        } else {
            val errorBody: JsonElement? = jsonObject.get(PayloadKeys.ERROR_BODY)
            callback.onNetwordRequestError(errorBody!!.asJsonObject, apiIndex)
        }
    }
}


我尝试了不同的 proguard 规则,但没有结果。
请帮忙。

最佳答案

如果这对任何人都有帮助,我有一个现有的项目,其中包含我制作的库模块。为了防止我的应用程序在被 ProGuard 缩小后崩溃,我需要添加

-keepclassmembers enum * { *; }
不仅是库的 build.gradle,还包括主模块的 build.gradle。

关于android - 获取 `java.lang.AssertionError: java.lang.NoSuchFieldException: HTTP_1_0`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57790047/

相关文章:

Android AsyncTask - 避免多个实例运行

android - 与proguard混淆

android - 使用 apache.commons.logging 类失败的已签名导出 Android 应用程序无法转换为 'a.a.a.a.c'

android - Gradle在运行Android工具时会忽略testProguardFile

android - 使用 proguard 规则排除文件

android - Activity 启动背后的linux操作是什么? (安卓)

android - displayImage 和 loadImage 缓存的不是同一个文件?

Android 基于检查的每日通知

android - 加载页面后未关闭进度对话框

android - 启用 Proguard 时出错