RAD Android应用程序中的自签名证书

时间:2019-05-25 04:42:09

标签: android rest delphi ssl android-manifest

我具有使用自签名证书的SSL REST服务。我可以通过TRESTClient从常规delphi应用程序中调用它。但是,当我在Android应用程序中使用它时,它将在调用过程中引发以下异常。

  

带有消息的异常类EJNIException   'java.security.cert.CertificateException:   java.security.cert.CertPathValidatorException:的信任锚   找不到认证路径。

我发现,必须通过将android:networkSecurityConfig="@xml/network_security_config"添加到 AndroidManifest.template.xml 文件的application部分中来配置网络安全。

<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 文件的位置。当我将其放置在 Debug res 文件夹中时,它在构建过程中被删除。因此无法找到它,并且应用程序在打包阶段会引发异常。

  

错误:E2312   C:\ Users \ User \ Documents \ Embarcadero \ Studio \ Projects \ Andr \ Android \ Debug \ TabbedApplication \ AndroidManifest.xml:19:   错误:错误:找不到与给定名称匹配的资源(位于   值“ @ xml / network_security_config”的“ networkSecurityConfig”。

我不知道在哪里放置它并让RAD Studio知道它必须在编译时抓取此文件。

1 个答案:

答案 0 :(得分:0)

您不能直接使用“调试”和“发布”文件夹来指定需要与应用程序一起部署的文件,因为它们是每次重建时清除的临时文件夹。

要进行部署,您应该使用Project -> Deployment对话框。

您可以在其中指定要部署的本地文件(放置在构建文件夹外部),配置(调试,发行版或两者)及其目标路径。