在我的项目中,我正在使用 RxJava 执行 API 调用。
没有proguard,它运行良好。但是当我应用 proguard 它给出 java.lang.AssertionError: java.lang.NoSuchFieldException: HTTP_1_0
在 onError(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/