You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Android的network_security_config中debug-overrides内cleartextTrafficPermitted不识别怎么办

错误原因

Android 网络安全配置规范明确规定,<debug-overrides> 节点仅可用于配置调试场景下的自定义信任锚(例如自签名调试证书),不支持嵌套 <base-config> 标签,因此你将明文权限配置写在该节点下会被系统直接忽略,导致调试模式下依然拦截HTTP请求。

可行实现方案

下面两种方案都可以实现Debug模式允许明文请求、Release模式默认禁止的需求:

方案1:MSBuild条件引用不同配置文件

这是兼容性最好的方案,无需修改业务逻辑:

  1. 在Android项目的Resources/xml目录下新建两个配置文件:
  • 调试版配置network_security_config_debug.xml:
<network-security-config>
   <base-config cleartextTrafficPermitted="true" />
</network-security-config>
  • 正式版配置network_security_config_release.xml:
<network-security-config>
   <base-config cleartextTrafficPermitted="false" />
</network-security-config>
  1. 卸载Android项目,右键编辑.csproj项目文件,添加如下条件引用规则:
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
  <AndroidResource Include="Resources\xml\network_security_config_debug.xml">
    <Link>Resources\xml\network_security_config.xml</Link>
  </AndroidResource>
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Release' ">
  <AndroidResource Include="Resources\xml\network_security_config_release.xml">
    <Link>Resources\xml\network_security_config.xml</Link>
  </AndroidResource>
</ItemGroup>
  1. 删除原有的通用network_security_config.xml文件,重新加载项目。
  2. 在AndroidManifest.xml的application标签中正常引用配置即可:
<application android:networkSecurityConfig="@xml/network_security_config" ...>

编译时会自动根据当前构建模式选择对应的配置文件打包。

方案2:清单文件宏替换

如果不想维护两份配置文件,可以直接通过Xamarin内置的清单宏实现动态控制:
在AndroidManifest.xml的application标签中直接配置usesCleartextTraffic属性:

<application 
  android:usesCleartextTraffic="${if DEBUG}true${else}false${endif}"
  ...>

无需额外配置网络安全文件,系统会自动根据构建模式切换明文权限。

内容的提问来源于stack exchange,提问作者user756366

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:27:03