Android 9 网络适配 network-security-config & cleartextTrafficPermitted

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,591评论 2 45
  • 陪老妈去赶集,老妈要买一种食物,问了价钱,卖东西的老板说有两种价钱,分别说了两种价,两者之间相差每斤差一块钱。 老...
    蕊依岚阅读 585评论 0 3
  • 三八理论: 就是上帝给了每个人公平的三个8小时,第一个8小时大家都在工作第二个8小时大家都在睡觉,人与人的区别...
    小芭蕾_7ed2阅读 376评论 0 0
  • 在我国古代,人们多把而今的北方地域称做朔方、或者塞上。原因不外乎这里处在中央王朝与边疆少数民族之间的边境地带。有文...
    武俊祥阅读 648评论 1 4