У меня есть служба REST через SSL с самозаверяющим сертификатом.Я могу вызвать его из обычного приложения Delphi через TRESTClient.Но когда я использую его внутри приложения Android, во время вызова возникает следующее исключение.
Класс исключения EJNIException с сообщением java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: доверять привязке дляпуть сертификации не найден.
Я обнаружил, что сетевая безопасность должна быть настроена путем добавления android:networkSecurityConfig="@xml/network_security_config"
в application
секцию файла AndroidManifest.template.xml .
<application android:networkSecurityConfig="@xml/network_security_config"
android:persistent="%persistent%"
android:restoreAnyVersion="%restoreAnyVersion%"
android:label="%label%"
android:debuggable="%debuggable%"
android:largeHeap="%largeHeap%"
android:icon="%icon%"
android:theme="%theme%"
android:hardwareAccelerated="%hardwareAccelerated%"
android:resizeableActivity="false">
Затем мне пришлось создать res \ xml \ network_security_config.xml файл с похожим содержимым:
<?xml version="1.0" encoding="utf-8"?> <network-security-config>
<domain-config>
<domain includeSubdomains="true">example.com</domain>
<trust-anchors>
<certificates src="@raw/my_ca"/>
</trust-anchors>
</domain-config> </network-security-config>
Но где разместить network_security_config.xml файл.Когда я поместил его в папку res внутри Debug , он был удален во время сборки.Поэтому он не может быть найден, и приложение вызывает исключение на этапе упаковки.
Ошибка: E2312 C: \ Users \ Пользователь \ Documents \ Embarcadero \ Studio \ Projects \ Andr \ Android \ Debug \ TabbedApplication \ AndroidManifest.xml: 19: ошибка: ошибка: не найден ресурс, который соответствует указанному имени (в 'networkSecurityConfig' со значением '@ xml / network_security_config').
Не знаю, где разместитьи дать RAD Studio знать, что он должен получить этот файл во время компиляции.