Android Studio - 资源条目已定义

Posted

技术标签:

【中文标题】Android Studio - 资源条目已定义【英文标题】:Android Studio - Resource Entry already defined 【发布时间】:2014-08-21 11:24:28 【问题描述】:

使用 android Studio (Beta) 编译我的 Android 应用程序后,出现以下错误:

Error:error: Resource entry background is already defined.
res\drawable-xhdpi-v4\background.9.png:0: Originally defined here.

这发生在我的 res 文件夹中有一个名为“background”的图像文件时。

然后我制作了一个 9 补丁版本并将其粘贴到同一个文件夹中。这意味着有 2 个同名文件。所以不出所料,我遇到了这个错误。

但是我现在删除了我的代码和布局文件中的背景图像文件(包括 9 补丁版本和原始图像)的所有实例,我仍然有这个错误。

【问题讨论】:

【参考方案1】:

在我们的例子中,当其他一些库升级到最新版本时,问题开始出现(错误显示库中的“资源重复值”)。 我们只是降级了升级后的库版本。

真正的痛苦是因为我们有许多依赖项,当存储库中有可用的新版本时,这些依赖项可以动态升级。所以我的队友必须检查所有可以动态升级的库,看看是否有最近升级的库,尝试降级并检查构建是否正常。他发现许多是在前一天升级的。降级其中一个可以恢复构建。

我们得出的结论是不使用动态版本控制。 Don't use dynamic versions for your dependencies。

顺便说一句,这是错误:

任务:app:generateDebugResources UP-TO-DATE AGPBI: "kind":"error","text":"error: 资源的重复值 \u0027attr/itemBackground\u0027 与配置 \u0027\u0027。","sources":["file":"/Users /unknownuser/.gradle/caches/transforms-1/files-1.1/singledateandtimepicker-1.2.2.aar/86ae3786d70c769e610c8a01d58aa638/res/values/values.xml","position":"startLine":15,"startColumn": 4,"startOffset":2427,"endColumn":48,"endOffset":2471],"original":"","tool":"AAPT" AGPBI: "kind":"error","text":"error: resource 之前定义在这里。","sources":["file":"/Users/unknownuser/.gradle/caches/transforms-1/ files-1.1/singledateandtimepicker-1.2.2.aar/86ae3786d70c769e610c8a01d58aa638/res/values/values.xml","position":"startLine":15,"startColumn":4,"startOffset":2427,"endColumn": 48,"endOffset":2471],"original":"","tool":"AAPT"

任务:app:mergeDebugResources 失败 错误:java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.v2.Aapt2Exception:AAPT2 错误:查看日志了解详情

FAILURE:构建失败并出现异常。

【讨论】:

【参考方案2】:

就我而言,问题在于我有多个“.”。在文件名中。喜欢:

a.png
a.bold.png

解决方案是重命名为

a.png
a_bold.png

【讨论】:

【参考方案3】:

我正在使用 Android Studio,我遇到了完全相同的问题,我在网上找到的答案都没有帮助我解决问题,包括上一个问题。因此,阅读错误消息的所有详细信息并找到以下几行:

错误:任务 ':app:processDebugResources' 执行失败。

com.android.ide.common.internal.LoggedErrorException:无法运行命令: C:\Users\user\AppData\Local\Android\android-studio\sdk\build-tools\android-4.4W\aapt.exe package -f --no-crunch -IC:\Users\user\AppData\Local \Android\android-studio\sdk\platforms\android-20\android.jar -MC:\Users\user\AndroidStudioProjects\DartsApp\app\build\intermediates\manifests\debug\AndroidManifest.xml -SC:\Users\user \AndroidStudioProjects\DartsApp\app\build\intermediates\res\debug -AC:\Users\user\AndroidStudioProjects\DartsApp\app\build\intermediates\assets\debug -m -JC:\Users\user\AndroidStudioProjects\DartsApp\app \build\generated\source\r\debug -FC:\Users\user\AndroidStudioProjects\DartsApp\app\build\intermediates\libs\app-debug.ap_ --debug-mode --custom-package com.dartstransit.dartsapp -0 apk --output-text-symbols C:\Users\user\AndroidStudioProjects\DartsApp\app\build\intermediates\symbols\debug

错误代码:

1

输出:

res\drawable-hdpi-v4\bus_w.png:0: error: Resource entry bus_w is already defined.
res\drawable-hdpi-v4\bus_w.jpg:0: Originally defined here.

如您所见,在同一个文件夹中有两个名称为 bus_w 的文件具有不同的扩展名。我已经从项目中删除了这些文件,但仍然出现错误,因此我决定检查错误消息中编译器行中引用的项目的每个文件夹。终于发现app\build\intermediates\res\debug\drawable-mdpi-v4文件夹下有bus_w.png文件的副本。

我刚刚删除了它,瞧,问题解决了。

【讨论】:

谢谢。它至少帮助了一个人。我。 在尝试接受的答案失败后,这在 AS 1.0 中对我有用。 这有帮助。删除了临时构建目录,我的错误消失了。【参考方案4】:

我通过移动图标做到了这一点

drawable/ic_launcher

mipmap/ic_launcher

效果很好:)

【讨论】:

【参考方案5】:

您是否尝试将此文件重命名为其他名称?您的一个图书馆似乎拥有相同的资源。

我看到许多开发者(包括我)也对ic_launcher 有疑问。我想你想试试mipmap 而不是drawable。所以我们会有这样的东西:

\res\mipmap-hdpi
\res\mipmap-mdpi
\res\mipmap-xhdpi
\res\mipmap-xxhdpi

希望对您有所帮助。

【讨论】:

【参考方案6】:

我最近也遇到了这个错误。这是我的解决方案,希望对您有所帮助。

1.drawable-hdpi文件夹中只保留9个补丁版本图片

2.确保xml文件中与此问题相关的代码保持不变:android:background="@drawable/msg_left"

而不是使用代码:

android:background="@drawable/msg_left.9"

PS:我的原图名是msg_left,我的9个补丁版本的图名是msg_left.9

【讨论】:

【参考方案7】:

1 构建 > 清理项目 2 构建 > 重建项目

【讨论】:

【参考方案8】:

一个简单的构建 > 重建项目帮助了我

【讨论】:

【参考方案9】:

您可以尝试执行以下操作之一:

清理和构建或gradle clean build assemble 使 Android Studio 失效并重新启动

【讨论】:

非常感谢!我一直在寻找这样的命令,但不知道在哪里看,因为 eclipse 略有不同。没想到会和gradle一起。 什么是“无效”?感谢您的帮助! “无效”部分是 AndroidStudio/IntelliJ 特定的功能。它位于文件 > 使缓存无效/重新启动下。它所做的基本上是“刷新”你的 IDE 的状态,有点像重新启动,所以它会再次重新初始化一些项目。

以上是关于Android Studio - 资源条目已定义的主要内容,如果未能解决你的问题,请参考以下文章

在Android Studio 2021.2.1里查看安卓应用资源标识类R$id

listview android studio中每个条目的圆角

在 Android Studio 中显示 Cordova“console.log”条目

错误记录Android Studio 中 Gradle 配置报错 ( Can‘t determine type for tag ‘<item name=““ type=“String“>)

设备旋转,创建水平模式布局--Android studio

Android 是不是可以在 XML 文件中定义地图?