You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetworkSecurityConfig在API 31(Android 12)设备上不生效问题求助

可按以下顺序排查问题:

  • 首先校验自定义CA证书格式
    Android 12对证书格式校验更严格,需确认@raw/ca存储的是单根PEM/DER编码的CA证书,不要使用PKCS#7格式的证书链文件,PEM格式文件需严格以-----BEGIN CERTIFICATE-----开头、-----END CERTIFICATE-----结尾,无多余空白字符或异常编码内容。
  • 检查网络库及targetSdk配置
    若你的应用targetSdkVersion已升级到31(Android 12对应API等级),同时使用了OkHttp、Retrofit等第三方网络库,需将库版本升级到对应兼容API 31的版本(OkHttp需升级到4.9.0及以上),旧版本第三方网络库不会自动读取系统NetworkSecurityConfig配置,会导致自定义证书不生效。
  • 调整网络安全配置写法
    可在现有配置基础上补充debug-overrides节点,该节点仅在debug构建模式下生效,完全匹配你的开发版本专属配置需求,Android 12对该节点的兼容度更高,修改后的配置示例如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!-- 仅debug模式生效的信任配置 -->
    <debug-overrides>
        <trust-anchors>
            <certificates src="@raw/ca"/>
        </trust-anchors>
    </debug-overrides>
    <domain-config>
        <domain includeSubdomains="true">XXX.XX</domain>
        <trust-anchors>
            <certificates src="@raw/ca"/>
            <!-- 若需要同时信任系统公共根证书可补充下行配置 -->
            <!-- <certificates src="system" /> -->
        </trust-anchors>
    </domain-config>
</network-security-config>
  • 排查资源读取问题
    可临时将CA证书内容转成Base64内嵌到配置中,替换<certificates src="@raw/ca"/>为<certificates src="data:application/x-pem-file;base64,【你的证书Base64内容】"/>,测试是否为raw资源读取异常导致的问题。

内容的提问来源于stack exchange,提问作者Patrik Nespor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:09:02