Android 尽管添加了 xml 权限,应用仍不允许明文流量

Android app not permitting cleartext traffic inspite of adding xml permissions

我正在尝试使用 nativescript-vue 访问开发服务器 API。我已经在 android 清单中添加了所有可能的权限,但它给出了错误:JS: 错误:java.io.IOException: Cleartext HTTP traffic to url not permitted

这是我的清单:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

<application
        android:usesCleartextTraffic="true"
        android:name="com.tns.NativeScriptApplication"
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:cleartextTrafficPermitted="true"
        android:usesCleartextTraffic="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:theme="@style/AppTheme">

这是 network_security_config.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
       <domain includeSubdomains="true">192.168.xxx.xxx</domain>
   </domain-config>
</network-security-config>

这里是 Nativescipt-vue 代码:

httpModule.request({
        url: "http://192.168.XXX.XXX:XXXX/func",
        method: "POST",
        headers: { "Content-Type": "application/json" },
        content: data
      }).then((response) => {
        const result = response.content.toJSON();
      }, (e) => {
        console.error(e);
      });

对于遇到同样问题的人,tns platform remove androidtns platform add android 对我有用。此后它开始读取更新的清单。

进入App_Resources -> Android -> src\main -> AndroidManifest.xml 添加 android:usesCleartextTraffic="true" 转到应用程序 xml 部分,然后执行 tns 更新资源 cmd。