Google 为了提升用户数据和设备的安全性, 在 Android P (9.0) 系统中默认要求应用程序使用加密连接 (TLS)。这意味着运行 Android P 的设备将禁止 App 使用未加密的 HTTP 明文传输。所有网络流量必须通过加密协议 (如 TLS) 传输。而 Android Nougat (7.1) 和 Oreo (8.1) 系统不受此限制
如果需要在 Android P 中允许未加密的连接 (如调试或兼容旧系统), 可以通过以下步骤配置网络安全策略
创建 network_security_config.xml
在项目的 res
文件夹下创建 xml
文件夹, 然后在该文件夹中创建文件 network_security_config.xml
添加以下内容
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- 允许明文流量 (HTTP) -->
<base-config cleartextTrafficPermitted="true">
<!-- 指定信任的证书源 -->
<trust-anchors>
<!-- 信任系统证书 -->
<certificates src="system" overridePins="true" />
<!-- 信任用户安装的证书 -->
<certificates src="user" overridePins="true" />
</trust-anchors>
</base-config>
</network-security-config>
在 AndroidManifest.xml
中引用配置文件
在应用的 AndroidManifest.xml
文件中, 引用刚创建的网络安全配置
<application
android:networkSecurityConfig="@xml/network_security_config"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher">
...
</application>
原文