原因

Android 9的操作系统,原来在Android 8进一步加强系统安全权限的基础上,Android 又限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉,目前网络访问基本都从原来的http替换为了https也是加强安全性的一种表现。既然知道原因了,那就有相对应的解决方案。

1.在打包时进行声明,不再对http请求进行限制;
2.通知客户将客户端和服务器端的请求统一替换为https;
3.把targetSdkVersion版本降到27以下(Android8.0及以下)。

解决方案

后两点不再赘述,说说第一点是怎么声明配置的吧。
1、在android/app/res目录下新建一个xml目录,在xml目录中新建network_security_config.xml 文件 ,编辑文件内容如下:

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

2、在android/app目录下的AndroidManifest.xml文件中application标签内声明文件,如下:

<application android:hardwareAccelerated="true"  
android:icon="@mipmap/icon" 
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"--此行为添加内容
android:supportsRtl="true">
</application>
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐