Android网络安全配置XML解析失败问题求助
排查与修复network_security_config解析失败问题
以下是你的配置中存在的几个关键问题,逐一修复即可解决解析异常:
1. XML标签语法错误
- 配置缺少根标签
<network-security-config>,Android要求网络安全配置必须以此标签作为根节点 <trustkit-config>标签仅打开未闭合,违反XML标签成对出现的规则
2. 证书PIN值格式无效
SHA-256类型的证书PIN需为32字节的十六进制值(用冒号分隔时是32组两位十六进制字符),你的两个PIN均不符合要求:
- 第一个PIN末尾多了无效的
=符号,且整体长度不足 - 第二个PIN最后一组
1是单字符,不符合两位十六进制的格式规范
3. 过期日期格式不合法
pin-set的expiration属性需遵循RFC 1123标准格式(例如Mon, 09 Dec 2052 00:00:00 GMT),你当前的格式前有多余空格,且系统无法解析该格式。
修正后的完整配置示例
<network-security-config xmlns:tools="http://schemas.android.com/tools"> <!-- domain name --> <domain-config cleartextTrafficPermitted="true"> <domain tools:ignore="NetworkSecurityConfig">org.dukehealth.colectiv</domain> <trust-anchors> <!--<certificates src="user" />--> <certificates src="system" /> </trust-anchors> <pin-set expiration="Mon, 09 Dec 2052 00:00:00 GMT" tools:ignore="NetworkSecurityConfig"> <!-- 替换为你实际的SHA-256 PIN值 --> <pin digest="SHA-256" tools:ignore="NetworkSecurityConfig">89:0B:5E:8E:D3:62:BC:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00</pin> <!-- 替换为你实际的备份SHA-256 PIN值 --> <pin digest="SHA-256" tools:ignore="NetworkSecurityConfig">89:0B:5E:8E:D3:62:BC:E0:F5:20:78:7E:CA:10:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00</pin> </pin-set> <!-- TrustKit Android API --> <!-- enforce pinning validation --> <trustkit-config enforcePinning="true" disableDefaultReportUri="true"> <!-- Add a reporting URL for pin validation reports --> </trustkit-config> </domain-config> </network-security-config>
额外注意事项
- 请将示例中的
00替换为你实际的证书哈希字符,确保PIN长度和格式完全正确 - 确认
tools命名空间已在根标签中声明,否则tools:ignore属性会报错
内容的提问来源于stack exchange,提问作者Javed Quantum
相关产品推荐
相关产品推荐

