1

我有一个 Xamarin.Forms 应用程序,我可以根据包含的 network_security_config.xml 文件以明文 (http) 模式对其进行调试,如下所示:

<network-security-config>
   <base-config cleartextTrafficPermitted="true" />
</network-security-config>

但是,如果我将 cleartextTrafficPermitted 设置移动到 debug-overrides 标记内,如下所示,我会收到错误消息“不允许明文 HTTP 流量到 MYSITE”。

<?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 中的应用程序标记,并且还尝试在我的 ApplicationAttribute 中添加 (Debuggable = true) 作为参数主应用程序类声明,但无论我如何将应用程序设置为可调试,如果 base-config 标记嵌套在 debug-overrides 标记内,它似乎会被忽略。难道我做错了什么?是否有其他方法允许在调试模式下允许 HTTP 但在发布模式下不允许?

4

3 回答 3

1

这可能会发生,因为您指的是 Android 的调试模式,而 Xamarin 并未在其调试模式中使用它。

我不能完全证实这一点,但这是我能想到的唯一可能的原因。由于 Xamarin 不使用 Android 上的 Java 虚拟机来运行它可能无法使用针对此虚拟机的调试。

于 2021-10-04T18:03:43.750 回答
0

如下更改我的 Application 类的 [Application] 属性允许我仅在调试编译期间使用 HTTP:

#if(DEBUG)
    [Application(UsesCleartextTraffic=true)]
#else
    [Application]
#endif
于 2021-10-07T19:16:53.390 回答
-1
android:usesCleartextTraffic="true"

将此行放在清单文件中的应用程序标记中。

于 2021-10-05T02:48:01.970 回答