在网络策略 Flutter Android 中允许 IP 地址

时间:2020-12-26 16:08:49

标签: android flutter

在最近的变化之后 登陆版本:1.23 现在默认情况下在 iOS 和 Android 上禁用不安全的 HTTP 连接。

在 Manifest.xml 中添加此代码段后

<application ...>
 ...
<meta-data android:name="io.flutter.network-policy"
         android:resource="@xml/network_security_config"/>
</application>

这是我的 network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">15.535.243.8</domain>
</domain-config>
</network-security-config>

此后,如果我运行我的 Android 应用程序,我仍然会遇到异常。

 [ERROR:flutter/shell/common/shell.cc(210)] Dart Unhandled Exception: Invalid argument (domain): Invalid domain name: "15.535.243.8", stack trace: #0      new _DomainNetworkPolicy (dart:io/network_policy.dart:85:7)
 E/flutter (12820): #1      _constructDomainPolicies (dart:io/network_policy.dart:181:22)
 E/flutter (12820): #2      _EmbedderConfig._setDomainPolicies (dart:io/embedder_config.dart:44:23)
 E/flutter (12820): 
 F/flutter (12820): [FATAL:flutter/lib/io/dart_io.cc(38)] Check failed: !LogIfError(set_domain_network_policy_result). 
 E/flutter (12820): [ERROR:flutter/shell/common/shell.cc(210)] Dart Unhandled Exception: Invalid argument (domain): Invalid domain name: "15.535.243.8", stack trace: #0      new _DomainNetworkPolicy (dart:io/network_policy.dart:85:7)
 E/flutter (12820): #1      _constructDomainPolicies (dart:io/network_policy.dart:181:22)
 E/flutter (12820): #2      _EmbedderConfig._setDomainPolicies  (dart:io/embedder_config.dart:44:23)
 E/flutter (12820): 
 F/flutter (12820): [FATAL:flutter/lib/io/dart_io.cc(38)] Check failed: !LogIfError(set_domain_network_policy_result). 
 F/OIC_SRM_DOXM(20621): UpdatePersistentStorage failed!
 F/OIC_SRM_DOXM(28806): UpdatePersistentStorage failed!

3 个答案:

答案 0 :(得分:0)

你试过 http://15.535.243.8 吗?需要 http 方案来验证您的 IP 地址

答案 1 :(得分:0)

您看到的异常是因为“无效域名”,无论它是否安全(http 或 https)。

IP在这里不起作用,您需要注册一个域名并将其链接到您的服务器,然后您可以输入域名而不是IP。

如果您只在本地网络上工作并且您只需要将其用于开发目的,那么您可以编辑您的 hosts 文件并为所提供的 IP 提供域名

例如

 15.535.243.8    example.com

并且您的 network_security_config.xml 将类似于:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">example.com</domain>
  </domain-config>
</network-security-config>

答案 2 :(得分:0)

我在 AndroidManifest.xml 文件中添加了以下代码用于网络安全配置。

<application ...>
...
<meta-data android:name="io.flutter.network-policy"
         android:resource="@xml/network_security_config"/>
</application>

但这并没有解决我的问题。

然后就像在原生 android 项目中所做的那样,我在 AndroidManifest.xml 文件中添加了以下代码。

<application ...
    android:networkSecurityConfig="@xml/network_security_config">
    ...
</application>

这解决了问题。