美文网首页
Android 9.0 Http 的一些问题

Android 9.0 Http 的一些问题

作者: androidfan | 来源:发表于2019-06-03 15:12 被阅读0次

    Android 一路走来已经10年光景了,一路革故鼎新,推出了许多优秀的功能,当然这些都离不开我们伟大的,用代码改变世界的coder们,哈哈
    今天我们就来聊聊Android 9.0 对于我们开发者来说最直接的一件事情,那就是,Android 9.0 对http动手了!


    image.png

    Android 9.0 带来了自适应电池、黑暗模式(国内也叫夜间模式)、更轻松的文本选择、新的手势导航、通过Wi-FiRTT进行室内导航、多相机支持、动画增强、加强安全等等新特性,感兴趣的朋友们可以具体看看,有些东西可能咱们国产的MIUI EMUI flyme 上早都有了,但是不得不说,每次Android版本更新都是为了更安全,更好使用。
    别的不说,今天来看Http 网络请求。
    我接手的项目是个陈年酱香型的,一路迭代了三四年,项目目前是适配到25,适配到了7.1,以前是没问题,但是现在,vivo oppo 和小米商店对于应用版本的兼容适配都做了严格的要求:

    image.png

    也就是说,以后想要偷懒不去适配最新api是不可能的了,哈哈,好好学习吧
    那么,作为一个严谨的开发者,肯定是要跟上时代的步伐的,今天上班,二话不说就是修改TargetSdkVersion 版本,由25提升到了28,重新编译后,你才能体会到什么叫做牵一发而动全身
    由于androidx 和support的迁移,以及SDK的升级,项目里很多旧的api都不能使用了,一路修改,终于还是改好了,这里贴出来一部分,意思意思

    image.png image.png image.png image.png

    辛苦改完之后,运行项目,却发现,请求不到数据了!


    image.png

    debug一看,后台报错了?


    image.png
    但是ios 明明就是可以的嘛,这这-----就尴尬了呀

    说来也是神奇,脑子灵光一现,想到了Android 9.0 的http改变,Android 9.0 为了数据传输更加安全高效,故
    将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,这也就是意味着http 要被https替代了,其实这是可以理解的,毕竟http是有设计缺陷的,容易被窃取和劫持数据,https是更安全的,也解决了这点问题。

    那么,知道了问题所在,就可以解决了

    • 将TargetSdkVersion 设置为27,低于28 就可以正常使用http,但是这种方法无异于自欺欺人
    • 在资源文件新建xml目录,新建文件
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true" />
    </network-security-config>
    

    并且在清单文件里配置下

    <application
        android:networkSecurityConfig="@xml/network_security_config">
        <!--9.0加的,哦哦-->
        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />
    </application>
    
    • 如果感觉上面步骤麻烦,你甚至可以直接一句话,自己配置文件里加上
      android:usesCleartextTraffic="true"

    总而言之就是这几种方法了, 我选择的是方法三,这里还是建议小伙伴们使用https协议请求

    相关文章

      网友评论

          本文标题:Android 9.0 Http 的一些问题

          本文链接:https://www.haomeiwen.com/subject/uuecxctx.html