美文网首页Android系统特性文章合集
Android 9 网络适配 network-security

Android 9 网络适配 network-security

作者: 南窗云 | 来源:发表于2018-12-24 17:26 被阅读0次

    Android 9 在上传 ucloud 时失败,需要做一个 网络适配,如下:

    配置 ucloud 相关

    AndroidManifest

       <application
            android:networkSecurityConfig="@xml/network_security_config">
        </application>
    

    创建 network_security_config.xml 文件

    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">cn-bj.ufileos.com</domain>
        </domain-config>
    </network-security-config>
    

    问题

    原以为这样就解决了,还是太年轻了。
    项目中集成的网易云信IM忽然只能发文字,不能发送图片,视频,音频

    查看云信log,发现报错如下。

    javax.net.ssl.SSLHandshakeException: Domain specific configurations require that hostname aware checkServerTrusted(X509Certificate[], String, String) is used
    

    原因就是加了上述限制后,只允许注册过的 domain ,才可以明文请求
    云信IM就是明文请求(http),所以被制裁了。

    解决

    一开始想注册所有的明文domain(即 http),但是云信IM那边地址很多且乱,一直报错,最后就采用了 Android 7.0 + 的默认网络配置:

    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    

    详情请看:Android Develop 网络安全性配置

    Charles 抓包单独配置

    配置 Charles 抓包工具(安装证书后),网络无法访问,无法正常抓包。

    放开网络的 user 权限 ,就可以正常抓包了

                <certificates src="user" />
    

    如下:

    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
                <certificates src="user" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    

    相关文章

      网友评论

        本文标题:Android 9 网络适配 network-security

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