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

Android Manifest合并 tools:replace替换usesCleartextTraffic无效

Android Manifest清单合并失败:tools:replace配置不生效解决

问题表现

  • 合并报错信息:Attribute application@usesCleartextTraffic value=(true) from AndroidManifest.xml:27:9-45 is also present at AndroidManifest.xml:27:9-45 value=(false),官方提示在<application>节点添加tools:replace="android:usesCleartextTraffic"覆盖冲突配置,但添加后仍报相同错误。
  • 已添加的application标签配置:
android:name=".MainApplication"
       android:largeHeap="true"
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       android:requestLegacyExternalStorage="true"
       android:roundIcon="@mipmap/ic_launcher_round"
       android:theme="@style/AppTheme"
       android:usesCleartextTraffic="false"
       tools:replace="android:usesCleartextTraffic"
       tools:targetApi="28"

解决步骤

1. 补全manifest根节点的tools命名空间声明

tools:前缀的属性必须先在根节点声明命名空间才能生效,这是该类问题最常见的诱因。检查Manifest最外层<manifest>标签,确保存在以下命名空间配置,缺失则直接补上:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    <!-- 保留原有其他属性、命名空间 -->
>

2. 定位真实冲突来源

不要只依赖报错提示的行号,直接执行Gradle任务打印完整合并日志,定位冲突来自哪个子模块、第三方依赖:

  • Windows环境执行命令:gradlew app:processDebugManifest --stacktrace
  • Mac/Linux环境执行命令:./gradlew app:processDebugManifest --stacktrace
    如果定位到冲突来自第三方依赖,除了主模块的replace规则,也可以在依赖引入时做Manifest属性排除;如果冲突来自本地子模块,直接修改子模块Manifest中的对应属性,和主模块配置保持一致即可。

3. 检查构建变体的Manifest覆盖规则

如果项目配置了多渠道、多构建类型(debug/release等),检查对应变体源码目录下的AndroidManifest文件,这类目录下的Manifest优先级高于主Manifest,若其中单独配置了usesCleartextTraffic属性,会直接覆盖主Manifest的配置,导致replace规则失效,找到后修改对应属性保持统一即可。

4. 清理构建缓存后重新构建

以上配置确认无误后,按顺序执行操作清缓存:

  • 点击Android Studio菜单栏 File -> Invalidate Caches...,勾选清除缓存选项后重启IDE
  • 执行构建清理命令:Windows用gradlew clean,Mac/Linux用./gradlew clean
  • 重新触发项目构建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:06:16