Android P 网络请求的适配问题

        因为谷歌官方要求后期要全面支持api 28的版本,所以这两天一直在做适配android 9.0的工作。本来想着应该没有什么太大的问题,但是做的时候发现,有坑啊!

Google表示,为保证用户数据和设备的安全,针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议
参考博客:https://blog.csdn.net/weixin_42492548/article/details/88715492

网上看到了各位大佬给出的解决方案,大致有四种:

一、targetSdkVersion 改为 28 以下

        问题确实可以得到解决,毕竟编译的 apk 不是 9.0 的版本,但是存在的问题就是,今年年底谷歌上架要求的最低要求就是28,问题最终还是的改。

二、修改 http 为 https

        这个方式是最安全的,但是改动量可能会比较大,可能还会涉及到各公司底层 SDK 的修改

三、在 res 下新增一个 xml 目录,然后创建一个名为:network_security_config.xml 文件(名字自定),内容如下,大概意思就是允许开启 http 请求:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

也有添加的内容的版本:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates overridePins="true" src="system"/>
            <certificates overridePins="true" src="user"/>
        </trust-anchors>
    </base-config>
</network-security-config>

然后在你工程AndroidManifest.xml中application节点下新增:

android:networkSecurityConfig="@xml/network_security_config"

四、直接在AnroidManifest.xml中的application节点下新增:

android:usesCleartextTraffic="true"

上述四种方式,都可以有效的解决使用 http 请求无法获取数据的问题,供君参考。

但是,哎,人生总是充满了转折,我这边只有在9.0以下数据才能正常展示,具体原因还在定位中,公司大佬讲明天帮我看看,希望到时候能解决。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章