郑州app开发过程中遇到代码错误提示。下面是部分代码:
CLEARTEXT communication not supported: [ConnectionSpec(cipherSuites=[TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA........
因为太多的缘故,我在这里就不全部展示了。
下面讲下出现这段代码的原因和解决方法。
原因:出现这些DHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES等等代码,这些是加密过得代码,为什么是加密过?谷歌表示,Android 9 以后的传输,需要加密进行传输,不能明文显示。
解决:想了想,有两种方法。
1、把调试的时候的targetSdkVersion 这个当前sdk版本号调整Android8.1以后包含Android8.1。
2、另外一种办法就是,在 res 下新增一个 xml 目录,然后创建一个名为:network_security_config.xml 文件(名字自定) ,内容如下,大概意思就是允许开启http请求。
{?xml version="1.0" encoding="utf-8"?}
{network-security-config}
{base-config cleartextTrafficPermitted="true" /}
{/network-security-config}
加上这段代码后,需要在权限清单文件中,增加一条。
android:networkSecurityConfig="@xml/network_security_config"
这个加在application里面。