Open ChunmingWu opened 3 months ago
我的临时解决方案是不混淆有网络请求的类 -keep class com.xxx.xxx.ui.activity.* { ; }(PS:仅不混淆内部类也可以.$ { *; })。我哥说:看了一下编译后的文件,自动生成了一个内部类文件导致的
@ChunmingWu 你确定这个问题文档上面没有写?
同步请求的时候的确是有混淆的问题,一样的代码编译运行时没问题,混淆打包后有问题,但是异步混淆打包也没问,同步请求和异步请求的代码如下:同步请求:
` PostRequest postRequest = EasyHttp.post(ApplicationLifecycle.getInstance())
.schedulers(ThreadSchedulers.IO);
try {
HttpData
} catch (Throwable e) {
LogUtil.e(TAG, "上传图片失败 Exception:" + e.getMessage(), false, true);
return "Exception:" + e.getMessage();
}`
异步请求:
`EasyHttp.post(ApplicationLifecycle.getInstance())
.schedulers(ThreadSchedulers.IO)
.api(new UploadImgFileApi()
.setParamsWithFile(stepId, state, "", imgFile))
.request(new OnHttpListener<HttpData
@Override
public void onHttpFail(Throwable e) {
LogUtil.e(TAG, "upload--onHttpFail:" + e.getMessage(), false, true);
}
});`
应该是ResponseClass<HttpData
同步请求的时候的确是有混淆的问题,一样的代码编译运行时没问题,混淆打包后有问题,但是异步混淆打包也没问,同步请求和异步请求的代码如下:同步请求: ` PostRequest postRequest = EasyHttp.post(ApplicationLifecycle.getInstance()) .schedulers(ThreadSchedulers.IO); try { HttpData baseBean = postRequest .api(new UploadImgFileApi() .setParamsWithFile(stepId, state, "", imgFile)) .execute(new ResponseClass
() { }); LogUtil.i(TAG, "uploadImgSyn--服务器返回结果:" + baseBean, false, true); if (baseBean != null && baseBean.getStatus() != null && baseBean.getStatus().equals("success") && baseBean.getResult() != null) { return ""; } else { return "baseBean = null" + baseBean; } } catch (Throwable e) { LogUtil.e(TAG, "上传图片失败 Exception:" + e.getMessage(), false, true); return "Exception:" + e.getMessage(); }`
异步请求: `EasyHttp.post(ApplicationLifecycle.getInstance()) .schedulers(ThreadSchedulers.IO) .api(new UploadImgFileApi() .setParamsWithFile(stepId, state, "", imgFile)) .request(new OnHttpListener
() { @OverRide public void onHttpSuccess(HttpData baseBean) { LogUtil.i(TAG, "upload--onHttpSuccess:" + baseBean.toString(), false, true); } @Override public void onHttpFail(Throwable e) { LogUtil.e(TAG, "upload--onHttpFail:" + e.getMessage(), false, true); } });`
@Spikoss 你加上这段混淆规则再试一下:
-keep public class * extends com.hjq.http.model.ResponseClass {
*;
}
框架版本【必填】
11.8
问题描述【必填】
升级targetSDKVersion至34(Gradle 8.2.1,JDK 17),打release包进行网络请求时出现数据解析问题。若是 minifyEnabled 为false则无问题。确认已按照框架要求填写混淆规则。我另一个应用的框架版本是12.8,也遇到同样问题。 问题定位到Type类型为class java.lang.Void,所以无论用什么模板解析都失败。 我尝试使用Demo去复现,但因为gradle版本和JDK版本问题,Demo同步失败。
复现步骤【必填】
targetSDKVersion升至34, minifyEnabled 为true,打包运行应用进行网络请求就会出现
是否必现【必填】
是
项目 targetSdkVersion【必填】
34
出现问题的手机信息【必填】
OPPO CPH1823
出现问题的安卓版本【必填】
Android 10
问题信息的来源渠道【必填】
自己遇到的
是部分机型还是所有机型都会出现【必答】
所有机型
框架最新的版本是否存在这个问题【必答】
是
框架文档是否提及了该问题【必答】
否
是否已经查阅框架文档但还未能解决的【必答】
是
issue 列表中是否有人曾提过类似的问题【必答】
否
是否已经搜索过了 issue 列表但还未能解决的【必答】
是
是否可以通过 Demo 来复现该问题【必答】
否
提供报错堆栈
No response
提供截图或视频
提供解决方案
No response