如何从应用网络安全配置中引用Android库内置的CA证书?
解决方案
Android构建过程会自动合并所有依赖库的公共资源,你不需要拷贝证书文件,直接在应用的网络安全配置中引用库中res/raw目录下的证书即可,写法和引用应用本地资源完全一致。
前提条件
你依赖的Android库需要满足两个要求:
- CA证书存放在库的
res/raw目录下 - 库没有配置资源私有(默认Android库的资源均为公开可访问状态)
具体配置示例
假设依赖库中存放的CA证书文件名为lib_ca_root.crt、lib_ca_intermediate.crt,你应用的网络安全配置写法如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config> <domain includeSubdomains="true">example.com</domain> <trust-anchors> <!-- 直接引用依赖库中的CA证书,无需拷贝到本地 --> <certificates src="@raw/lib_ca_root"/> <certificates src="@raw/lib_ca_intermediate"/> </trust-anchors> </domain-config> </network-security-config>
注意事项
- 避免应用本地
res/raw目录下的文件和库中的证书文件名重名,重名时构建工具会优先使用应用本地的资源,覆盖库的资源 - 如果库的CA证书存放在
assets目录而非res/raw目录,无法直接在网络安全配置中引用,要么要求库开发者将证书迁移到res/raw目录,要么你需要拷贝证书到应用本地res/raw目录使用 - 本方案仅支持Android 7.0(API level 24)及以上系统版本
内容的提问来源于stack exchange,提问作者Alix
相关产品推荐
相关产品推荐

