在最近的变化之后 登陆版本: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!
答案 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>
这解决了问题。