微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在应用程序阶段构建 android 错误:mergeDebugResources,ParseError AttributeNSNotUnique

如何解决在应用程序阶段构建 android 错误:mergeDebugResources,ParseError AttributeNSNotUnique

我一直在尝试使用 Gradle 4.2.1 在 Android Studio 4.2 上构建我的 Android 应用程序,但是我遇到了以下错误,我只能找到 one question one month ago,另一个来自 { {3}} 也没有解决

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]:

today

我还查看了我所有的 *.xml 文件,从布局到值,android studio 已经验证了它们,所以我不理解异常。

与解析错误相关的部分:

消息:

Android Manifest Without Dependencies

让我觉得我的布局有问题,但 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 布局有问题,是的,但最大的问题是 gradle 4.2.1 的版本混淆了如何找到问题

因此,如果您想真正了解失败的原因,请将您的 gradle 降级到 4.1.3,然后 gradle 现在会告诉您 xml 的错误所在。无论您遇到什么错误,我都推荐这个,无论是解析错误、资源错误还是序言错误。

现在,对于实际的异常,Android Studio 不会检测何时在 标记和另一个不同的布局之间复制属性,例如constraintLayout、frameLayout 等...所以如果您使用 databinding,检查您使用的任何额外布局是否具有相同的属性。事实上,我只是建议将任何属性移动到您的第二个特定于实现的布局中,并保留数据绑定标记。

,

就我而言,这是布局标签的问题。我在其中使用 layout_width 和 layout_height 因为它给了我同样的错误。

因此,任何使用数据绑定的人都要仔细检查这一点,并检查您是否对不同的布局使用相同的 ID。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。