Android studio Gradle以非零退出值1结束(ic_launcher.png:错误:重复文件)

Android studio Gradle以非零退出值1结束(ic_launcher.png:错误:重复文件),android-studio,gradle,android-resources,aapt,aar,Android Studio,Gradle,Android Resources,Aapt,Aar,我和gradle犯了个奇怪的错误,请帮帮我 /.../app/build/intermediates/res/debug/drawable-xxhdpi-v4/ic_launcher.png: error: Duplicate file /.../app/build/intermediates/res/debug/drawable-xxhdpi/ic_launcher.png: Original is here. The version qualifier may be impl

我和gradle犯了个奇怪的错误,请帮帮我

/.../app/build/intermediates/res/debug/drawable-xxhdpi-v4/ic_launcher.png:
    error: Duplicate file
/.../app/build/intermediates/res/debug/drawable-xxhdpi/ic_launcher.png:
    Original is here. The version qualifier may be implied.
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process 'command '/.../sdk/build-tools/22.0.1/aapt'' finished with non-zero exit value 1
在它正常运行之前,但由于我将classpathcom.android.tools.build:gradle:1.2.2,这会导致我出现错误

根据,这是由于您使用的一个库拥有自己的
ic_launcher.png
——当然它们不应该这样做(更多信息在底部)

日志中提到的两个图标很可能不同:一个是你的,另一个很可能是有人忘记从库中删除的通用android图标

要查看有问题的依赖项,请按两次
Ctrl+Shift+N
(对于非项目匹配),然后键入
ic_launcher.png
(请参见屏幕截图上的最后一行)

若要暂时解决此问题,请将
-v4
限定符添加到您的drawable Resource文件夹中(或将
ic_launcher.png
移动到
*dpi-v4
,如果您有理由的话)--此解决方案归功于。您还可以将图标重命名为其他图标,并对
AndroidManifest.xml

真正的问题是有问题的库带有无用的图标。拥有自己资源的库(如ActionBarSherlock或Google自己的Support v7库)使用独特的命名方案来避免与您的资源名称发生冲突(
abs
abc

Launcher图标不应该出现在库中,因此我建议您通知正在使用的库的作者,他们忘记删除冗余的
ic_Launcher.png
文件

同样值得一提,正如中非常精确地指出的,这并不意味着您的资源永远不应该与库中的资源重叠:有很多合法的理由可以用您自己的资源覆盖库中的资源(例如,更改库中提供的活动的外观),gradle插件的资源合并逻辑确实允许这样做,故意的

只是在这种特殊情况下,当android gradle插件版本(1.2.2之前)上的lib落后时,就会发生冲突,在这种情况下,资源会被放在两个不同的
*dpi
文件夹中——有和没有
-v4
限定符;但是它们实际上在同一个资源“桶”中,所以系统认为它们是重复的

这个小故障确实带来了无用的
ic_launcher.png
覆盖(实际上是冲突——由于小故障),但是这种情况对于其他类型的资源来说并不普遍都是坏的


也就是说,有时您故意覆盖库的资源,而此故障仍然会导致错误消息弹出。这一次资源名没有真正的问题,所以上面提到的临时解决方案或推迟插件版本是可行的。

降级到com.android.tools.build:gradle:1.1.3解决了我的问题

我在使用第三方库时遇到了同样的问题。(Github上的库)

为了解决这个问题,我将我的ic_launcher.png文件从drawable文件夹移动到mipmap文件夹。问题解决了


升级到1.2.3,但确保您的gradle和BuildTools版本在您的项目和使用的AAR中是相同的

如果使用无法控制渐变/生成版本的外部LIB:
与作者联系或自己查看资料来源。有些库有未使用的启动器图标,这将导致此冲突。删除此图标将解决您的问题。在极少数情况下,同名源(如menu.xml)也可能导致此问题。一个简单的解决方法是重命名您的ressource。

只需将ic_launcher.png重命名为其他名称(例如ico_launcher.png)

以下是查找问题的一般方法:

/gradlew build--stacktrace--info

您将发现错误的详细信息。 我发现了我的错误:一个重复的类导致了一个顶级错误,删除这个重复的类将解决这个问题。

对我来说,一个简单的“清理项目”和“重建项目”就解决了这个问题。

遵循这个链接

像这样找零钱

repositories {
maven {url "https://clojars.org/repo/"}
}
dependencies {
compile 'frankiesardo:icepick:{{latest-version}}'
**provided** 'frankiesardo:icepick-processor:{{latest-version}}'
}

在我的例子中,我在strings.xml文件中添加了撇号s('s)。 一定要检查伙计们有没有这样的错误,把它删除肯定会有帮助的。 IDE不能正确地显示错误,反而使所有资源都不同步,这太令人恼火了


我知道问题并非如此,但错误完全相同,即Gradle执行失败。

简单地
重命名
图像
右键单击图像,选择重构,然后选择重命名
)。它将解决问题,因为
中的一个也在使用同名
图像
,我也遇到了同样的问题,以下内容对我有效:

  • 重命名你的图标
  • tools:replace=“android:icon”
    添加到清单中的
    标记中

您可以尝试第一步,但我在合并清单文件时仍然遇到问题。这样,它应该覆盖库中使用的任何资源。

更新到最新的gradle插件1.5.0解决了这个问题。在根
build.gradle
文件中更新以下脚本

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
    ...
}

我设法通过不一致的文件扩展名大写来触发这个问题。我在一个可绘制目录中有一个.jpg图像,但在另一个可绘制目录中有一个相同文件名但.jpg的图像。文件名和目录正确,但扩展名不正确。

此外,使用最新的gradle/build工具重建同一个库也可以解决问题。不过,我很确定我的设置是最新的:build tools v 22.0.1,gradle v 1.2.2UPD哦,重建库,抱歉,乍一看,这是对图书馆作者的一个建议。J