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

Flutter修改Android应用标签后,明文HTTP配置失效报不允许不安全HTTP错误

Flutter 不安全HTTP访问拦截失效问题修复

根因说明

修改android:label后HTTP访问被拦截,本质是Android Manifest合并规则触发了属性覆盖错位:

  • 你在<application>标签上添加的tools:replace = "android:label",是为了解决多模块Manifest合并时的label属性冲突,但这条规则生效后,会让合并器对同标签下其他存在冲突的属性(包括android:usesCleartextTraffic)启动严格校验。
  • 此前未加这条replace规则时,合并器默认取你项目中声明的usesCleartextTraffic="true"作为最终值;一旦加了仅针对label的replace声明,合并器会因为你没有声明对usesCleartextTraffic的覆盖权限,将该属性的优先级切换为上游依赖(Flutter默认安全配置、第三方库自带配置)的取值,最终让Android默认的“禁止访问不安全HTTP”规则重新生效。

解决方式

  • 快速修复方案:调整tools:replace的覆盖范围
    把原配置中的tools:replace = "android:label"修改为:
    tools:replace="android:label,android:usesCleartextTraffic"
    明确告知Manifest合并器,这两个属性的最终取值完全以当前Manifest文件的配置为准,不会被上游依赖的配置覆盖。
  • 长期稳定方案(推荐):独立配置网络安全规则
    这种方式可完全规避Manifest合并逻辑导致的配置意外失效,操作步骤:
    1. 在android/app/src/main/res/路径下新建xml目录,创建network_security_config.xml文件,写入:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    
    1. 在<application>标签上关联该配置:
      android:networkSecurityConfig="@xml/network_security_config"
  • 验证方法:修改完成后打开Android Studio的Merged Manifest视图,查看合并后的最终Manifest中网络安全相关属性的取值来源,确认没有被其他模块覆盖为关闭状态即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 09:45:04