getActivity / EasyHttp

Android 网络请求框架,简单易用,so easy
Apache License 2.0
1.4k stars 191 forks source link

[Bug]:java.lang.ClassCastException: java.lang.Void cannot be cast to com.hjq.easy.demo.http.model.HttpData #254

Open r9000x opened 3 months ago

r9000x commented 3 months ago

框架版本【必填】

12.8

问题描述【必填】

升级AGP 8.5.1后打包aab格式会闪退;

复现步骤【必填】

下载 EasyHttpNew.zip 运行后,主要修改了target到34,AGP也升级了;具体你看看demo;运行后打包release版本的aab格式包,发现会闪退;错误就是标题那种;但是打包release版本的apk又不会;排查后推测应该是R8的问题;于是设置#android.enableR8.fullMode=false确实可以,但是#android.enableR8.fullMode=true就不行;因为升级AGP8之后,默认是true;一番排查后,发现 image 会走这个逻辑; aab格式转apk可以按照https://blog.csdn.net/yingaizhu/article/details/119545459这里配置后, 分别使用命令行 bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks 解压到目录,然后连接手机到电脑,使用bundletool install-apks --apks=/MyApp/my_app.apks来安装到手机进行测试;

是否必现【必填】

项目 targetSdkVersion【必填】

34

出现问题的手机信息【必填】

OPPO Find X6

出现问题的安卓版本【必填】

14

问题信息的来源渠道【必填】

用户反馈

是部分机型还是所有机型都会出现【必答】

目前测试14系统会,没有其他机型无法测试

框架最新的版本是否存在这个问题【必答】

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

issue 列表中是否有人曾提过类似的问题【必答】

是否已经搜索过了 issue 列表但还未能解决的【必答】

是否可以通过 Demo 来复现该问题【必答】

提供报错堆栈

No response

提供截图或视频

No response

提供解决方案

No response

getActivity commented 3 months ago
image
getActivity commented 3 months ago

既然有人提过类似的 issue,为什么又重新提了一个新的 issue?

r9000x commented 3 months ago

因为按照提供的方法解决不了。

getActivity commented 3 months ago

https://github.com/getActivity/EasyHttp/issues/221

getActivity commented 3 months ago

@r9000x 之前有人提出的类似问题,是因为混淆导致泛型被擦除导致的解析不到泛型,并不是框架解析泛型的代码写得有问题,对于你提出的这个问题,大概率也是这个问题,你先排查一下是否是泛型被擦除导致的,如果是泛型被擦除导致的,需要你自行解决,如果不是这个问题,你需要提供泛型在没有擦除的证明,我在确定是框架的问题后会进行处理。

getActivity commented 3 months ago
image
getActivity commented 3 months ago

目前你这个问题无法明确是否为框架的问题,就目前已知的信息来看,大概率是你自己的问题,所以只能是你先行排查,等确定是框架的问题,我才会做处理。

r9000x commented 3 months ago

你下载demo运行一下看看,我只是改了一下AGP的版本以及target,没有我自己代码的东西。所以应该不是我自己的问题,demo是你项目的demo,不是我自己写的,建议你看看,个人觉得是框架的问题。你说的https://github.com/getActivity/EasyHttp/issues/221这个,试过了也是不行。

getActivity commented 3 months ago
image
getActivity commented 3 months ago

工程我运行了,没有发现什么问题

getActivity commented 3 months ago

@r9000x 这个问题应该是你来确定,如果泛型被擦除了,框架解析不到是没有任何问题,你换任何框架都一样的,框架层面是无法解决的,如果泛型没有被擦除,这个就是框架的问题,你反馈前应当确定好这个问题是不是泛型被擦除导致的,你总说自己没有改什么东西,但是实际上我无法判断你改了什么东西,因为我无法一行行代码对照你改了什么,你上面说只改了 Gradle 版本和 targetSdk 版本,但是最上面又说加了 fullMode 属性,还要我按照你提供的文章要求将 aab 转成 apk,再用特定命令行安装,所以你说的简单改了点什么东西其实并不简单,我需要付出的排查成本是非常高的,所以你需要确定好是不是泛型被擦除导致解析不到的,不是我才会处理,这个是我对所有提 issue 的要求,并非针对你一个人,如果你不想按照我的要求来确定,想要图省事,那么问题只能靠你自己解决了。

r9000x commented 3 months ago

debug模式是没有问题,请使用./gradlew bundleRelease命令打包release版本的aab格式,具体你看我最早的描述。并非为了图省事,只是在解决问题。

getActivity commented 3 months ago

@r9000x 你先按照我的要求,核实一下编译后的产物里面的泛型是不是被擦除了?

r9000x commented 3 months ago

可以的,你也可以按照我的描述去复现一下,如果不能复现,那可能是我这边的问题。

getActivity commented 3 months ago

对于一些不能确定是不是框架的问题,我会判断这个问题是偏向框架的问题多一点,还是非框架的问题多一点

  1. 如果是偏向框架的问题多一点,并且我没有实际性的证据证明不是框架的问题,我会协助排查
  2. 如果是偏向非框架的问题多一点,并且你没有实际性的证据证明就是框架的问题,你需要先行排查

如果是你第一个反馈此问题的,那么结果将会偏向第一种,但是之前有人反馈此问题的人 issues/221 佐证了这个问题大概率就是非框架的问题,所以你需要走第二种的流程先行排查,走完了才轮到我处理,不应当是我先排查你后排查,假设后续证实这个问题是非框架的问题,这个操作等于是利用了框架作者个人的时间和精力去解决个人遇到的技术问题,这个口子一旦放开,后续会有更多的人会效仿,争先恐后找各种理由来白嫖开源框架作者的时间和精力。

kanshenmekan commented 1 day ago

轮子哥,我也遇到了相同的问题,升级gradle之后,添加了混淆规则,但是没有效果,requestSuccess获取到的类型是Void

kanshenmekan commented 1 day ago

-keep class implements com.hjq.http.listener.OnHttpListener { ; }

-keep class extends com.hjq.http.model.ResponseClass { ; } 把public 去除就可以了

getActivity commented 20 hours ago

-keep class implements com.hjq.http.listener.OnHttpListener { ; }

-keep class extends com.hjq.http.model.ResponseClass { ; } 把public 去除就可以了

收到,感谢反馈,文档已纠正