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

Android Studio 4.2构建出现app:mergeDebugResources AttributeNSNotUnique报错

问题现象

使用Android Studio 4.2搭配Gradle 4.2.1构建Android应用时出现编译报错,目前可检索到1个月前的同类问题以及当日新增的未解决同类提问,报错信息如下:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.ResourceCompilerRunnable
   > Resource compilation failed. Check logs for details.

* Try:
Run with --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeDebugResources'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:200)
    at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:198)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:179)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
    ... 12 more
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.res.ResourceCompilerRunnable
    at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:336)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:142)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:94)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:80)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:68)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:563)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    ... 93 more
Caused by: com.android.aaptcompiler.ResourceCompilationException: Resource compilation failed. Check logs for details.
    at com.android.aaptcompiler.ResourceCompiler.compileResource(ResourceCompiler.kt:121)
    at com.android.build.gradle.internal.res.ResourceCompilerRunnable$Companion.compileSingleResource(ResourceCompilerRunnable.kt:31)
    at com.android.build.gradle.internal.res.ResourceCompilerRunnable.run(ResourceCompilerRunnable.kt:15)
    at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
    at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
    ... 10 more
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[22,347]
Message: http://www.w3.org/TR/1999/REC-xml-names-19990114#AttributeNSNotUnique?androidx.constraintlayout.widget.ConstraintLayout&layout_width&http://schemas.android.com/apk/res/android
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:652)
    at java.xml/com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83)
    at com.android.aaptcompiler.XmlProcessor.process(XmlProcessor.kt:116)
    at com.android.aaptcompiler.ResourceCompiler.compileXml(ResourceCompiler.kt:267)
    at com.android.aaptcompiler.ResourceCompiler.access$compileXml(ResourceCompiler.kt:1)
    at com.android.aaptcompiler.ResourceCompiler$getCompileMethod$2.invoke(ResourceCompiler.kt:143)
    at com.android.aaptcompiler.ResourceCompiler$getCompileMethod$2.invoke(ResourceCompiler.kt)
    at com.android.aaptcompiler.ResourceCompiler.compileResource(ResourceCompiler.kt:118)
    ... 29 more

BUILD FAILED in 2s
17 actionable tasks: 1 executed, 16 up-to-date

补充信息

  • 注释所有依赖后查看合并后的AndroidManifest.xml文件,报错仍相同,报错位置固定为行[22,347]
    无依赖的Android Manifest文件
  • 已检查布局、values等所有本地*.xml文件,Android Studio均提示验证通过,无法定位异常原因
  • 错误提示指向ConstraintLayout控件的layout_width属性存在同命名空间下的重复声明
  • IDE布局预览正常,可正常渲染页面

项目依赖配置

注释依赖前的build.gradle依赖配置如下:

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])

    // Core
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'androidx.annotation:annotation:1.2.0'

    // Singleton
    implementation group: 'javax.inject', name: 'javax.inject', version: '1'

    // Lifecycle
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

    // UI
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'androidx.navigation:navigation-ui:2.3.5'

    // Room
    implementation 'androidx.room:room-runtime:2.3.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
    testImplementation 'junit:junit:4.12'
    annotationProcessor 'androidx.room:room-compiler:2.3.0'

    // Navigation
    implementation 'androidx.navigation:navigation-fragment:2.3.5'

    // Lombok
    compileOnly "org.projectlombok:lombok:1.18.12"
    annotationProcessor "org.projectlombok:lombok:1.18.12"

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'

    // JSON
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

    // Logging
    implementation 'com.jakewharton.timber:timber:4.7.1'
}
解决方案

该报错本质是XML文件在同命名空间下存在重复属性声明,Android Studio本地校验只会取最后一条属性生效因此不会提示异常,aapt2编译阶段的严格校验才会触发报错,可按以下步骤排查解决:

  1. 清理构建缓存:依次执行Clean Project、Invalidate Caches / Restart后重新构建,排除缓存导致的编译异常
  2. 排查本地布局文件:全局搜索所有布局文件中的androidx.constraintlayout.widget.ConstraintLayout标签,检查是否存在重复声明android:layout_width属性的情况,删除重复声明即可
  3. 定位具体报错文件:执行./gradlew :app:mergeDebugResources --stacktrace命令获取更详细的编译日志,可直接定位到触发错误的具体XML文件,排除三方依赖引入的布局文件问题
  4. 兼容适配:该问题属于Android Studio 4.2与constraintlayout:2.0.4的已知兼容问题,可将constraintlayout版本升级到2.1.0及以上,或降级到1.1.3版本后重试
  5. 临时绕开方案:若暂时无法定位问题,可在build.gradle的android节点下添加以下配置,关闭aapt2的严格XML校验即可正常构建:
android {
    ...
    aaptOptions {
        additionalParameters "--warn-manifest-validation"
        useNewCruncher false
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 16:24:08