Cordova如何支持Android 7.0引入的Network Security Config?

syo*_*syo 3 android cordova

Android 7.0引入了Network Security Config以支持使用自定义CA,但是Cordova如何支持它?我从Cordova的文档中找不到任何提示。

Jam*_*nes 13

您可以通过将edit-config标记添加到您的Android平台中来实现config.xml,Cordova Android插件v7.0支持。

您将需要使用Google的示例创建为本地Android应用程序创建的Network Security Config文件。

接下来,在Cordova中,config.xml您可以使用edit-config标签将networkSecurityConfig属性添加到Application标签。然后,您只需要将Network Security Config文件作为应用程序的资源复制到该res/xml目录。

这是一个在您的应用程序config.xml中的外观示例

...
<platform name="android">
    <edit-config xmlns:android="http://schemas.android.com/apk/res/android" file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
        <application android:networkSecurityConfig="@xml/network_security_config" />
    </edit-config>
    <resource-file src="network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
</platform>
...
Run Code Online (Sandbox Code Playgroud)

  • 在根目录下创建 network_security_config.xml 文件(与 config.xml 路径相同),并填写以下内容: ` &lt;?xml version="1.0"encoding="utf-8"?&gt; &lt;network-security-config&gt; &lt;base -config cleartextTrafficPermission="true"&gt; &lt;trust-anchors&gt; &lt;certificates src="system" /&gt; &lt;/trust-anchors&gt; &lt;/base-config&gt; &lt;/network-security-config&gt; ` (2认同)

Sha*_*wal 5

什么詹姆斯回答的作品,但如果你有一个应用程序,你不能指定域或希望允许明文通信的所有域,我们需要设置android:usesCleartextTraffic="true"platforms/android/app/src/main/AndroidManifest.xml<application>标签。

因为,在 Android P(版本 9,API 级别 28)中,默认情况下禁用明文支持。为此,只需在您的config.xml内部添加以下内容<platform name="android">

<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
    <application android:usesCleartextTraffic="true" />
</edit-config>
Run Code Online (Sandbox Code Playgroud)

  • 我必须添加 android 命名空间定义才能使其工作: ```&lt;edit-config xmlns:android="http://schemas.android.com/apk/res/android" file="app/src/main/ AndroidManifest.xml" mode="merge" target="/manifest/application"&gt; &lt;application android:usesCleartextTraffic="true" /&gt; &lt;/edit-config&gt;``` (3认同)