Невозможно ссылаться на необработанные ресурсы из XML-файла конфигурации сетевой безопасности
Я пытаюсь следовать документации Android для использования пользовательских сертификатов здесь. Требуемый файл конфигурации сети:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="@raw/extracas"/>
<certificates src="system"/>
</trust-anchors>
</base-config>
</network-security-config>
Я уже создал network_security_config.xml и добавил ссылкуndroid:networkSecurityConfig="@xml/network_security_config"
к моему манифесту. У меня есть файлы.crt, которые мне нужно включить, но у меня две проблемы:
Я не могу создать каталог в моей необработанной папке, когда я это делаю, он создает каталог в моей файловой системе, но не в моей папке сырых ресурсов в проекте.
Вместо каталога я просто ссылаюсь на мои файлы.crt непосредственно в папке raw, но когда я пытаюсь ссылаться на сертификаты, вот мой network_security_config.xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config> <trust-anchors> <certificates src="@raw/cert_cubic_trusted_ca-sha256.crt"/> <certificates src="system"/> </trust-anchors> </base-config> </network-security-config>
Я получаю красное закорочение с ошибкой "отсутствует ресурс src", и при попытке сборки журнал сборки выдает ошибку:
AGPBI: {"kind":"error","text":"error: resource raw/certname.crt (aka com.comname.appname:raw/certname.crt) not found.","sources":[{"file":"/Users/205314/project/appname/app/src/main/res/xml/network_security_config.xml","position":{"startLine":5}}],"original":"","tool":"AAPT"}
:app:processDebugResources
:app:processDebugResources FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to process resources, see aapt output above for details.
Я не знаю, почему я не могу ссылаться на ресурсы в моей папке сырых ресурсов из XML или создавать папку в ней, это, кажется, моя самая большая проблема. Я могу ссылаться на сырые ресурсы с помощью R.raw в коде, но мне никогда не приходилось ссылаться на @raw, и я не уверен, почему он не работает, как описано.
1 ответ
Согласно документации по доступу к ресурсам, имя ресурса
имя файла, исключая расширение
Так что вам нужно удалить .crt
от твоего src
:
<certificates src="@raw/cert_cubic_trusted_ca-sha256"/>