当前位置: 首页 > 知识库问答 >
问题:

使用ProGuard后截击总是抛出错误

终翰学
2023-03-14

我在我的项目中使用了凌空和格森。该项目是一个Lib项目。当我在演示项目中使用Lib时,截击总是抛出错误响应,并显示消息:“org.json.JSONException:End of input at character 0”,并且从来没有成功响应。我想这是由ProGuard引起的。奇怪的是,当我在Lib或演示项目中设置“minifyEnabled”时,一切都很好。但当我在Lib和Demo中设置“minifyEnabled”时,截击总是失败的。有人知道为什么会这样吗?

抱歉,错过了内容。。。

这是截击失误:

org.json.JSONException: End of input at character 0

这是我的截击和格森的ProGuard:

## ----------------------------------
##     Gson
## ----------------------------------
-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.** { *; }
-keep class com.google.gson.stream.** { *; }


## ----------------------------------
##     Glide
## ----------------------------------
-keep class com.bumptech.glide.** {*;}

## -------------------------------------------
##     volley
## -------------------------------------------
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.NetworkDispatcher {
    void processRequest();
}
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.CacheDispatcher {
    void processRequest();
}
-keep class com.android.volley.** {*;}
-keep class com.android.volley.toolbox.Volley
-keepclassmembers class com.android.volley.toolbox.Volley { *; }
-keep class com.android.volley.toolbox.** {*;}
-keep class com.android.volley.Response$* { *; }
-keep class com.android.volley.Request$* { *; }
-keep class com.android.volley.RequestQueue$* { *; }
-keep class com.android.volley.toolbox.HurlStack$* { *; }
-keep class com.android.volley.toolbox.ImageLoader$* { *; }
-keep class org.apache.http.** {*;}

重要的是,只有同时混淆Lib和Demo时,才会发生此错误。使用Lib或Demo进行模糊处理不会出现此问题。

有人帮忙吗?我百分之百确信我在ProGuard文件中保留了所有模型类。

2019-03-18 14:38:15.635 11276-11276 W/System.err: com.a.a.m: org.json.JSONException: End of input at character 0 of 
2019-03-18 14:38:15.635 11276-11276 W/System.err:     at com.a.a.a.k.a(Unknown Source:32)

While the com.a.a.a.k is "com.android.volley.toolbox.JsonObjectRequest"

共有3个答案

郗浩
2023-03-14

尝试在您的构建中使用以下配置。格雷德尔。

android {
...
   useLibrary 'org.apache.http.legacy'
}

我在volley中遇到了类似的问题,但错误不同,上述配置解决了我的问题。根本原因是Gradle插件默认不再包含所有可选库。

商夜洛
2023-03-14

在proguard规则中添加以下行。pro,你可以在Gradle Script下找到

-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.NetworkDispatcher {
    void processRequest();
}
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.CacheDispatcher {
    void processRequest();
}

您也可以参考此链接

使现代化

洪旻
2023-03-14

把这些规则放在proguard中,

-keep class com.android.volley.** { *; }
-keep class org.apache.commons.logging.**

-keepattributes *Annotation*

-dontwarn org.apache.**
 类似资料:
  • 当我已经安装模块Volley在android工作室我收到错误: 错误:配置项目“:volley”时出现问题。在C:\Users\egen\AppData\Local\android\sdk Open android sdk Manager中找不到哈希字符串为“android-22”的目标 我已经安装了Android支持库这里怎么了? 编辑 现在我收到了错误: 错误:(10,1)在计算根项目Fysi

  • 我的kubectl版本是: 客户端版本:version.info{Major:'1',Minor:'10',GitVersion:'V1.10.0“,GitCommit:'FC32D2F3698E36B93322A3465F63A14E9F0EAEAD',GitTreest:'Clean',BuildDate:'2018-03-26T16:55:54Z”,GoVersion:'GO1.9.3“,编

  • 我有一个Rest后的电话。每当我尝试使用邮递员打电话时,它都工作正常。但是如果我使用JerseyAPI客户端尝试相同的帖子调用。我收到400个错误请求 字符串URI=“rest URI”; 如果我使用上述输入在Postman中运行相同的请求,我可以成功命中api并获得200,但在JerseyAPI中获得400

  • 我在服务层的spring-boot应用程序中使用了Hystrix(Camden.sr7版本),而没有回退方法。Service的方法之一如下所示: 对于这样的响应,不清楚实际上是从哪个方法抛出异常的。如果我将版本更改为brixton.sr5(以前的版本),它将返回清晰的响应: 因此Hystrix的新版本(实际上是spring-cloud-dependencies的新版本)不会抛出HystrixRun

  • 以下是我的OS和Java版本: OS:Windows 10 openjdk版本“1.8.0_242” openjdk运行时环境(构建1.8.0_242-B08) openjdk 64位服务器VM(构建25.242-B08,混合模式)

  • 我想向服务器发送一篇帖子,帖子的正文是真是假。我有这个代码,我使用截击库 ShoozyHeader()将内容类型设置为text/plain,并将Accept设置为text/plain以及身份验证所需的其他标头。 如果我尝试http://requestmaker.com/,服务器正确响应,但我运行此代码,服务器响应: 错误的请求-无效的头HTTP错误400。请求的标头名称无效。 如果删除getBod