Невозможно ссылаться на необработанные ресурсы из 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, которые мне нужно включить, но у меня две проблемы:

  1. Я не могу создать каталог в моей необработанной папке, когда я это делаю, он создает каталог в моей файловой системе, но не в моей папке сырых ресурсов в проекте.

  2. Вместо каталога я просто ссылаюсь на мои файлы.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"/>