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

Android导入自签名CA失败:raw目录未识别及配置文件异常

解决Android导入自签名CA及网络安全配置问题

看起来你在配置自签名CA访问HTTPS服务器时踩了两个常见坑,我来一步步帮你捋顺:

一、先解决res/raw目录未被识别的问题

你提到创建了res/raw/mycertificate目录放证书,这是错误的!Android的res/raw是直接的资源目录,不允许创建子目录。正确的做法是:

  • 直接在res目录下创建raw文件夹(如果还没有的话)
  • 将你的自签名证书文件(比如命名为my_ca.crt或my_ca.pem)直接放到res/raw根目录下
  • 确保Android Studio能识别这个目录:如果创建后没显示,试试同步一下项目(点击工具栏的Sync Project with Gradle Files按钮),或者重启AS

二、修复network_security_config.xml的标签问题

首先,确保你的network_security_config.xml放在res/xml目录下,然后给你一个标准的配置模板,对应导入自签名CA的场景:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <!-- 保留系统默认的CA信任 -->
            <certificates src="system" />
            <!-- 添加我们的自签名CA -->
            <certificates src="@raw/my_ca" />
        </trust-anchors>
    </base-config>
    <!-- 如果只需要给特定域名配置,也可以用domain-config,更安全 -->
    <!-- <domain-config>
        <domain includeSubdomains="true">your-server-domain.com</domain>
        <trust-anchors>
            <certificates src="@raw/my_ca" />
        </trust-anchors>
    </domain-config> -->
</network-security-config>

注意要点:

  • 标签要严格闭合,XML对格式要求很高,AS报错大概率是标签拼写错误、未闭合,或者路径引用错误
  • src="@raw/my_ca"里的my_ca是你放在raw目录下的证书文件名(不带后缀),比如你的证书是mycertificate.crt,这里就写@raw/mycertificate

三、清单文件的正确配置

别忘了在AndroidManifest.xml的<application>标签里添加以下属性,关联你的网络安全配置:

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config"
    ...>
    ...
</application>

额外排查点

  1. 证书格式要正确:确保你的自签名CA是PEM或DER格式,如果是PKCS#12(.pfx/.p12),需要先转换成PEM格式再放入raw目录
  2. 同步项目:每次修改资源文件后,记得同步Gradle,避免AS缓存导致的识别问题
  3. 测试API级别:如果你的App目标API是24+,网络安全配置才会生效,低于24的话可能需要额外处理(比如自定义TrustManager)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:25:49