为什么在包含在我的 Xamarin Android network_security_config.xml 文件的调试覆盖标记中时未检测到 cleartextTrafficPermitted 标记?
Why is cleartextTrafficPermitted tag not detected when enclosed in debug-overrides tag of my Xamarin Android network_security_config.xml file?
我有一个 Xamarin.Forms 应用程序,我可以在明文 (http) 模式下对其进行调试,基于包含一个 network_security_config.xml 文件,如下所示:
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
但是,如果我将 cleartextTrafficPermitted 设置移动到 debug-overrides 标记内,如下所示,我会收到错误消息“不允许到 MYSITE 的明文 HTTP 流量”。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<base-config cleartextTrafficPermitted="true" />
</debug-overrides>
</network-security-config>
我的应用程序 运行 处于调试模式。尽管应用程序调试已经在工作并且模式是调试,以防万一我尝试将 debuggable:true 显式添加到我的 AndroidManifest.xml 中的应用程序标记,并且还尝试添加 (Debuggable = true) 作为参数我的主应用程序 class 声明上的 ApplicationAttribute,但无论我如何将应用程序设置为可调试,如果 base-config 标记嵌套在 debug-overrides 标记内,它似乎会被忽略。难道我做错了什么?有没有其他方法允许在调试模式下允许 HTTP 但在发布模式下不允许?
这可能是因为您指的是 Android 的调试模式,而 Xamarin 没有在其调试模式下使用它。
我无法完全证实这一点,但这是我能想到的唯一可能的原因。由于 Xamarin 不在 Android 到 运行 上使用 Java 虚拟机,因此它可能无法使用专用于此虚拟机的调试。
android:usesCleartextTraffic="true"
将此行放在清单文件中的应用程序标记中。
如下更改我的应用程序 class 的 [Application] 属性允许我仅在调试编译期间使用 HTTP:
#if(DEBUG)
[Application(UsesCleartextTraffic=true)]
#else
[Application]
#endif
我有一个 Xamarin.Forms 应用程序,我可以在明文 (http) 模式下对其进行调试,基于包含一个 network_security_config.xml 文件,如下所示:
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
但是,如果我将 cleartextTrafficPermitted 设置移动到 debug-overrides 标记内,如下所示,我会收到错误消息“不允许到 MYSITE 的明文 HTTP 流量”。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<base-config cleartextTrafficPermitted="true" />
</debug-overrides>
</network-security-config>
我的应用程序 运行 处于调试模式。尽管应用程序调试已经在工作并且模式是调试,以防万一我尝试将 debuggable:true 显式添加到我的 AndroidManifest.xml 中的应用程序标记,并且还尝试添加 (Debuggable = true) 作为参数我的主应用程序 class 声明上的 ApplicationAttribute,但无论我如何将应用程序设置为可调试,如果 base-config 标记嵌套在 debug-overrides 标记内,它似乎会被忽略。难道我做错了什么?有没有其他方法允许在调试模式下允许 HTTP 但在发布模式下不允许?
这可能是因为您指的是 Android 的调试模式,而 Xamarin 没有在其调试模式下使用它。
我无法完全证实这一点,但这是我能想到的唯一可能的原因。由于 Xamarin 不在 Android 到 运行 上使用 Java 虚拟机,因此它可能无法使用专用于此虚拟机的调试。
android:usesCleartextTraffic="true"
将此行放在清单文件中的应用程序标记中。
如下更改我的应用程序 class 的 [Application] 属性允许我仅在调试编译期间使用 HTTP:
#if(DEBUG)
[Application(UsesCleartextTraffic=true)]
#else
[Application]
#endif