Android 项目网络安全配置知识记录

前言

Android 在 Android 9(Pie)[android:targetSdkVersion = 28]之后将网络通信默认配置为禁止了明文传输。所谓明文传输就是Http请求,所以如果我们开发版本高于 28 ,打包之后我们 app 中的 Http 请求都无法成功,将会抛出

W/System.err: java.net.UnknownServiceException: CLEARTEXT communication to **** not permitted by network security policy

的错误。

关于 Http 请求的限制历史:

  • 当 Android 6.0(Marshmallow)「(API 23)」发布时,谷歌提出了清单文件中配置: android:usesCleartextTraffic 作为防止意外使用明文通信的手段
<!-- 默认允许所有明文通信 -->
<base-config cleartextTrafficPermitted="true">
    <trust-anchors>
        <!-- 信任系统预装 CA 证书 -->
        <certificates src="system" />
        <!-- 信任用户添加的 CA 证书,Charles 和 Fiddler 抓包工具安装的证书属于此类 -->
        <certificates src="user" />
    </trust-anchors>
</base-config>

  • Android 7.0 (Nougat) 通过引入Android网络安全配置 「Network Security Configuration」特性来过渡开发者配置这个属性。Android 7.0 ~ 8.0 「(API 24) 至 (API 27)」 之间,客户端仍可以使用 Http 请求。系统默认网络安全配置如下
<!-- 默认允许所有明文通信 -->
<base-config cleartextTrafficPermitted="true">
    <trust-anchors>
        <!-- 信任系统预装 CA 证书 -->
        <certificates src="system" />
    </trust-anchors>
</base-config>

  • Android 9(Pie)「(API 28)」以后系统默认强制禁止明文传输 usesCleartextTraffic = true 且默认只信任系统级别证书,也
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值