任务'app:mergeDebugResources'崩溃Cruncher的执行失败…png


103

我在我的drawable-directory中添加了一些格式为* .png的图片,并将其与布局链接。但是每次我尝试构建它时,都会出现一个错误

“ ...粉碎Crunsher ... png失败”

以下是控制台的输出:

app:mergeDebugResources
AAPT out(1561599) : No Delegate set : lost message:Done
AAPT out(12956469) : No Delegate set : lost message:Done
AAPT out(20612543) : No Delegate set : lost message:Crunching             C:\Dev\StudioProjects\test\android\app\src\main\res\drawable\bt_meeting_focused.png
AAPT out(11030156) : No Delegate set : lost message:Crunching     C:\Dev\StudioProjects\test\android\app\src\main\res\mipmap-mdpi\ic_launcher.png
AAPT out(11030156) : No Delegate set : lost message:Crunching single PNG file: C:\Dev\StudioProjects\test\android\app\src\main\res\mipmap-    mdpi\ic_launcher.png
AAPT out(11030156) : No Delegate set : lost message:    Output file:     C:\Dev\StudioProjects\test\android\app\build\intermediates\res\debug\mipmap-mdpi-v4\ic_launcher.png
AAPT out(11030156) : No Delegate set : lost message:Done
AAPT err(11030156): libpng error: Not a PNG file
AAPT out(20612543) : No Delegate set : lost message:Crunching single PNG     file:     C:\Dev\StudioProjects\test\android\app\src\main\res\drawable\bt_meeting_focused.png
AAPT out(20612543) : No Delegate set : lost message:    Output file:     C:\Dev\StudioProjects\test\android\app\build\intermediates\res\debug\drawable\b    t_meeting_focused.png
AAPT out(20612543) : No Delegate set : lost message:Done
AAPT err(20612543): libpng error: Not a PNG file
AAPT err(1561599): libpng error: Not a PNG file
AAPT err(12956469): libpng error: Not a PNG file

 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Crunching Cruncher uhr.png failed, see logs

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --    debug option to get more log output.

BUILD FAILED

Total time: 14.598 secs
Executing tasks: [clean, :app:generateDebugSources,     :app:generateDebugAndroidTestSources]

Configuration on demand is an incubating feature.
:app:clean
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportSupportV42220Library
:app:prepareDebugDependencies
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugBuildConfig
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources
:app:mergeDebugResources
AAPT out(14080484) : No Delegate set : lost message:Done
AAPT out(9206750) : No Delegate set : lost message:Done
AAPT out(25360025) : No Delegate set : lost message:Done
AAPT err(25360025): libpng error: Not a PNG file
AAPT err(14080484): libpng error: Not a PNG file
AAPT out(6423170) : No Delegate set : lost message:Crunching C:\Dev\StudioProjects\test\android\app\src\main\res\drawable\anfrage_senden_.png
AAPT err(6423170): libpng error: Not a PNG file
AAPT out(6423170) : No Delegate set : lost message:Crunching single PNG file:     C:\Dev\StudioProjects\test\android\app\src\main\res\drawable\anfrage_senden_.png
AAPT out(6423170) : No Delegate set : lost message: Output file: C:\Dev\StudioProjects\test\android\app\build\intermediates\res\debug\drawable\a    nfrage_senden_.png
AAPT out(6423170) : No Delegate set : lost message:Done
AAPT err(9206750): libpng error: Not a PNG file

Process list not empty
:app:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Crunching Cruncher uhr.png failed, see logs

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --    debug option to get more log output.

BUILD FAILED

Total time: 4.325 secs

我试图清理项目,重新生成它,并通过“ gradlew clean build --refresh-dependencies”刷新依赖项,但没有任何效果。我已经检查了build.gradle文件中的依赖项,但似乎没有任何东西会导致错误。

   apply plugin: 'com.android.application'
   android {
   compileSdkVersion 22
   buildToolsVersion "22.0.1"
   compileOptions.encoding = 'windows-1251'

   defaultConfig {
       applicationId "com.example.benutzer.test"
       minSdkVersion 16
       targetSdkVersion 22
       versionCode 1
       versionName "1.0"
   }
   buildTypes {
    release {
           minifyEnabled false
           proguardFiles getDefaultProguardFile('proguard-android.txt'),    'proguard-rules.pro'
       }
   }
   }

   dependencies {
   compile 'com.android.support:support-v4:22.2.0'
  }

您有什么主意,错误的根源是什么?文件路径也不太长,每次不超过256个符号,那也不是问题:/

先感谢您 :)


您对此还有进一步的运气吗?我也遇到同样的情况。
mushcraft

1
我已经通过在这里共享解决方案来解决此问题-> stackoverflow.com/questions/22583418/…–
ashumeow

2
错误:Windows上的文件路径过长,不能超过240个字符。请尝试为项目使用较短的路径。就我而言,我已将项目源从其他文件夹移至桌面,从桌面打开项目后,此问题会自动解决。
幸运拉娜

@LuckyRana同样为我工作
Bassem Wissa

就像@LuckyRana所说的那样,字符数量减少了,我不必更改目录,我的项目名称太长了,因此使其较短并可以使用。如果有人遇到问题并且他们的项目已经在根目录中,则这可能会有所帮助。
devcodes

Answers:


128

就我而言,该错误是由我添加到drawable文件夹中的PNG文件引起的。我通过更改文本(以不正确的方式)将其扩展名从jpg更改为png,然后将其上传为PNG。

这就是Android Studio指向的问题。

我已解决此问题,并通过使用Paint.NET工具或任何其他工具(正确的方式)更改了文件扩展名,然后将其上传到drawable文件夹,使错误消失。


13
提示:如果您使用的是Mac OS,则可以打开终端并在images文件夹中运行以下命令:'sips -s format png * .png --out。' 它将正确地将所有带有.png
sufix

同样的事情发生在我身上,我也将扩展名从psd重命名为png,但它无法运行。得到了这个确切的错误信息。
TharakaNirmana

2
这个问题也为我转载。非常感谢您的回答。
Nisim Naim

@cassioso谢谢哥们。
WideFide

1
谢谢哥们..通过完全相同的方式解决了我的问题。
阿帕纳

116

我通过将项目移到外部目录来解决此问题,然后成功编译了该目录。

这是由于项目目录的路径太长。

例如,我将项目从:

D:/Android/Apps/AndroidStudioProject/AppName

D:/Android/AppName

我不知道为什么..但这是唯一对我有用的东西。非常感谢!
drayn

1
是的,我无法解释原因。但这个工作对我也够
Thilaw法布里斯

8
可能是由于长途问题。
拉杰夫

1
在Windows 7 x64,Gradle 2.14.1,Android构建工具24.0.2上出现了相同的问题。我到资源文件的完整路径太长(243个符号)。当我使用项目重命名文件夹时,它解决了问题。
德米特里(Dmitry)

也为我工作!在Android Studio 2.2.0上遇到了问题
Zen Zen

53

这是由于在可绘制图像中添加了具有某些扩展名(.jpg)的图像,并且您已将其更改或保存为.png格式(在不使用编辑器工具的情况下手动更改图像格式时会发生此错误)。

在使用AAPT(Android资产打包工具)编译资源包时,Android Studio会引发错误,因此您所需要做的就是使用一些图像编辑器工具(如GIMPPaint)来相应地保存扩展名。一切完成后,重新生成项目。

例如:在“画图”中打开图像(拖放图像以将其打开)→菜单文件另存为另存为类型 →从下拉菜单中选择所需的类型,如下面的图片所示:

在此处输入图片说明

在此处输入图片说明


@krish我有gimp的扩展扩展名,但似乎没有任何其他作用,请帮助。
Ajay Pandya

1
使用画图工具来更改“图像扩展名”花花公子,它非常简单。我已经在上面解释了有关如何使用它的信息……
anand krish

1
我使用Preview(在Mac上)更改了图像扩展名,效果很好,非常感谢!
Emzor '16

1
告诫:如果图像中有透明度,则使用“画图”将删除透明度。
金斯敦

1
这是真正有用的日Thnx这么多
Achref Gassoumi

20

就我而言,解决方案很简单。我将整个项目移到路径很短的另一个位置。

该问题是由长目录名和文件名引起的。


5
OP确实说文件路径不长。如果您想对此挑战,那么发表评论会更好。
乔纳森·梅

当Bamboo在Windows Server上运行时,这与Windows路径长度限制有关。解决方案:在Linux上构建!
Ewoks

20

最好的解决办法是改变buildDir buildDir

例如:

allprojects {
    buildDir = "C:/tmp/${rootProject.name}/${project.name}"
    repositories {
        jcenter()
    }
}

重建和快乐的编码。


比移动项目容易得多。真好!
fishjd

尝试了该解决方案,它可以正常工作,但是现在我无法从Visual Studio 2015部署到我的手机。收到以下错误消息:“找不到可部署的apk。您可能需要构建项目。”
哈桑·阿塔·乌拉

9

就我而言,我只需更改库文件即可解决此问题因为我犯了一个愚蠢的错误,即添加同一库的两个不同版本。

由于原因可能多种多样,因此我根据问题发现了以下解决方法:

  1. 资源不匹配

  2. 资源中缺少属性,错误的标签等

  3. 风格问题

  4. 样式中缺少名称

  5. 资源和图书馆的重复性

  6. 有时甚至可以通过更改build.gradle中的兼容库来解决

  7. 执行aapt命令

  8. 将扩展名从.jpg重命名为.png

  9. 只需借助Clean Project

    1. 即使在某些情况下,重新启动Android Studio也可以解决问题。

4

这是因为不支持您的PNG文件,否则您直接重命名了文件。

请执行以下步骤。

  1. 将图像源文件从Android Studio复制到桌面。
  2. 用画图打开文件。
  3. 将文件另存为扩展名.png
  4. 从您复制的Android Studio中删除现有的源文件。
  5. 添加新创建的文件,该文件是通过Paint重命名的。

问题解决了 :)


我已使用tinypng.com来重新生成png图像
JuniorMayhé17年

4

就我而言,当我创建9.png文件时,我的原始PNG文件使用的是绘制9.png线的空白处,从而创建了错误的9.png文件。尝试为您的PNG文件添加一些边距。


是的,我的与此相似。我正在更改图像文件,当我保存它时,它损坏了。我只需要重做对图像的调整并重新保存它。
uplearnedu.com 17-04-27


3

最好的答案已经在gradle输出中给出了:

* Try:
Run with --stacktrace option to get the stack trace. 

在Android Studio中打开终端并运行gradlew :app:mergeDebugResources --stacktrace。(在我的情况下,这是Windows 240字符数限制),但它也应该为您提供其他任何问题的根本原因。


3

就我而言,我认为这个问题与文件路径的长度有关。UNIX和Windows系统分别规定最大路径长度为255个字符和260个字符,我认为分配给动态指定的路径时处理过程会失败。因此,即使错误消息中引用的路径长度短于限制(在Windows构建环境中,我的路径长度仅为187),我认为Crunch实用程序可能会在内部指定更长的路径,即使只是暂时的。

您可以通过将项目移至文件系统上的最根目录,然后尝试重新编译来确定这是否是错误源。


谢谢。我有同样的问题,但没有意识到。该错误消息未指出路径长度,因为该问题以及它所打印文件的路径长度都在255以下。但是,将env var GRADLE_USER_HOME设置为非常短的值可以解决我的构建机器上的问题。
albert c braun

2

我试图重建,重新启动,清理,更新Gradle等。但是,它们都不适合我。

有时,这可能是由于XML或资源文件的命名错误引起的。

至少对我来说,通过更改名称可以解决该问题。


2

我注意到 Gradle构建工具降级1.2.3解决了Crunching PNG错误的问题,但是在1.5.0上,问题仍然存在。



1

我在项目开始时就将图像放入了可绘制的文件夹中,它总是会给我这个错误,并且永远不会生成,所以我:

  1. 从drawable中删除了所有内容
  2. 试图运行(这显然导致了另一个构建错误,因为它缺少对文件的引用
  3. 将图像重新添加到文件夹,重新构建项目,运行它,然后工作正常。

我不知道为什么这对我有用,但确实如此。祝您好运,我们称之为Android Studio。


1

压缩过程是图像准备过程,这意味着图像文件有问题。就我而言,我有一个PNG文件,它实际上不是PNG文件。

我的解决方案:

我从图像文件夹中运行了一个超级简单的Python脚本,将所有图像都转换为PNG,所以总共需要做的是:

  1. 为了安装PIL库,请运行: pip install pillow

  2. 将以下Python代码保存在要转换的图像文件夹中的.py文件中。

  3. 根据需要调整脚本中的from_format和to_format变量。

  4. 运行脚本: python script_name.py

    import os
    from PIL import Image
    
    from_format = (".jpg", ".png", ".bmp")
    to_format = "png"
    
    for fn in os.listdir('.'):
         if os.path.isfile(fn) and fn.lower().endswith(from_format):
            print "Converting File: %s" % fn
            im = Image.open(fn)
            im.save(fn.split('.')[0] + '.' + to_format, to_format.upper())

如果您想了解有关“图像”模块的更多信息,请访问:http : //effbot.org/imagingbook/image.htm


1

当我手动将图像(无论是JPEG还是PNG)复制到drawable文件夹时,我遇到了这个问题。这个问题可能有不同类型的临时解决方案,但是一种最佳的永恒方法是使用Android StudioDrawable importer插件

通过以下菜单安装它:菜单FileSettingsPluginsBrowse Repositories →搜索“ Drawable”。您会发现Drawable导入器是第一个选项。单击右侧面板上的安装。

右键单击Drawable资源文件夹,然后单击新建,使用它。现在,您可以看到列表底部添加了四个新选项,您将在其中找到合适的选项。在这种情况下,“批可绘制导入”就可以解决问题。


1

在Windows上迁移到Gradle 3.3之后,遇到了这个问题(使用gradle-2.14.1一切都很好)。

问题出在Gradle构建缓存的路径中,该缓存包含西里尔字母,例如

C:\Users\Иван\.android\build-cache

因此,我将用户的文件夹重命名为“ Ivan”,问题消失了。


+1,但我们无法在构建服务器上解决问题。路径看起来不错,但不起作用。我们回到了旧的gradle ...:/
令人难以置信的

1

这似乎是Gradle的一个讨厌的问题。我们刚刚从2.14升级到3.3,而我们的构建服务器无法再构建(Android Studio中的本地构建有效)。

路径太长的错误显示例如:

C:\ Windows \ System32 \ config \ systemprofile.gradle \ caches \ 3.3 \ scripts-remapped \ build_bonsjy48fqq8sotonpgrvhswt \ 36ejadunoxgw3iugkh95lqw \ projedd7e29570ae79482e0308d82f4e346b \ classes \ build_bonsjy $$ pg $ closure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_closure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure_sure后处理后的结果

我们必须为作为系统服务运行多年的服务创建一个本地用户帐户...现在,它保存在C:\ Users ...下,这比系统配置文件路径短得多。


1

我更改了应用程序的位置,并将其复制到较短的路径。您只需复制项目并将其粘贴到新的“短位置”即可。而且,它对我有用。

例如,

Old_path: c/:user/android_studio_project/your_app
New_path: c/:your_app


0

我正在从Eclipse导入Android Studio(版本2.10版)中的Android应用程序。不支持可绘制图像,然后手动删除这些图像并粘贴一些PNG图像。

并从Android系统信息库更新Android drawable导入器。然后清理并重建该应用程序,然后它可以工作。


0

此错误是由于我的项目所在的路径而引起的。例如,一个文件夹中有一个空格,

Folder\Another Folder\MyAndroidProjects\...

将其更改为Folder\AnotherFolder\MyAndroidProjects\...并重新同步Gradle为我解决了此问题。


0

我也遇到过这个问题,尽管它是Google项目应用程序提供的图像,但仍不能通过重新格式化图像来解决,只能通过以下方法解决:

将项目文件直接移动到分区

试试吧。它可能会帮助您。


0

就我而言,我分两个步骤达到了解决方案:

  1. 保持项目名称,程序包名称,文件夹名称简短,因为如果目录名称超过255个字符,则会出现mergeResource错误。
  2. 将可绘制对象保存在可绘制文件夹中。可绘制文件夹之外的任何可绘制文件(例如.jpg和.png)都会引发mergeResource文件夹错误。

255个字符?什么平台?Linux的?苹果电脑?
彼得·莫滕森

0

我也遇到同样的问题。就我而言,我只是将图像复制到了drawable文件夹,然后Android Studio显示错误“某些文件处理失败”。

我关于图像的问题仅是因为该图像是从我的自定义相机应用程序之一以.png格式保存的。出于测试目的,我将其复制到了drawable文件夹中。

之后,我测试了将图像另存为.jpg。它没有给出任何错误。这意味着相机默认情况下支持“ .jpg”格式。

最终我意识到了两件事:

  1. 默认情况下,相机支持“ .jpg”格式

  2. 在不使用图像工具的情况下,请勿更改图像格式(甚至以编程方式)。


文件扩展名!=文件格式您可以根据需要命名文件-它不会更改其格式。
令人难以置信的

我不明白您想说什么!我的图片来自自定义相机应用,并以编程方式另存为.png。因此,当我将该图像添加到可绘制文件夹时,编译失败。从我的相机应用程序将图像另存为.jpg时,不会出现此错误。
科纳·苏雷什

我理解您的回答是这样的:您的应用程序创建了一个jpg,但将其命名为“ png”,然后您惊讶于它不起作用。
令人难以置信的

0

只需将其添加到项目的local.properties文件中即可:

BUILD_DIR=C\:\\Tmp

(Windows中的错误是由于路径太长,因此我将该路径指定给一个临时文件夹。)


0

对我来说,这是因为我的.png文件之一实际上是.psd文件。将其重新保存到实际的PNG文件中,并且已修复。


0

对我来说,这是一个损坏的PNG文件

转到您的res文件夹,然后尝试打开每个图像。当找到无法打开的图像时,请用优质图像替换它。


-1

为了解决这个问题,您应该使用drawable-> new-> image资产,然后添加您的图像。然后,您将发现包含图像的mipmap文件夹,可以通过@ mibmab / img使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.