美文网首页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