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]

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

