Classloader关于Apache Http在Android里targetSdkVersion28前后时的表现调研

原因导向:项目在逐步适配targetSdkVersion,当Android P(9.0)手机问世后,出现了大面积的崩溃,后来定位到由于使用了org/apache/http/client/methods/HttpGet类,但是类缺失导致了crash。然后调研后发现Apache Http相关的类确实是在Android P版本的系统的rootclasspath去掉了,但是谷歌做了一个兼容:如果应用的targetSdkVersion<P,系统会把apache的类预加到应用自己的classpath中,所以应用自己的classloader还是能正常找到apache的类,但是如果应用指定使用系统的classpath加载apache的类就会有问题,会报这个异常(系统classpath获取的指的是ClassLoader.getSystemClassLoader(),一般插件中代码的预加载使用的就是系统的classloader)。

调研分析结论:
关于apache的问题,这里分开来进行调研分析:
1、targetSdkVersion<28(P)时,Android28手机和小于28的手机
2、targetSdkVersion>=28(P)时,Android28手机和小于28的手机

针对应用(非插件化)targetSdkVersion和Android系统版本中是否包含Apache Http相关类结论:

targetSdkVersion / Android手机系统版本 应用ClassLoader是否包含Apache Http
targetSdkVersion<28 / >=Android P
targetSdkVersion<28 / <Android P
targetSdkVersion>28 / >=Android P
targetSdkVersion>28 / <Android P

Apache Http在Android 版本的变更:
1、Android API 23中已经开始不提供

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值