无法读取PNG签名:文件不以PNG签名开头

问题描述 投票:11回答:9

Gradle构建失败,出现此错误:

Error:C:\Users\Roman\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.0.2.aar\bab547c3f1b8061ef9426f524a823a15\res\drawable-xhdpi-v4\abc_btn_switch_to_on_mtrl_00001.9.png failed to read PNG signature: file does not start with PNG signature

Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
Error:Execution failed for task ':app:mergeDebugResources'.
Error: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
aapt2 compile --legacy -o C:\dev\workspace\android2\MatrixCalculator\app\build\intermediates\res\merged\debug C:\Users\Roman\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.0.2.aar\bab547c3f1b8061ef9426f524a823a15\res\drawable-xhdpi-v4\abc_btn_switch_to_on_mtrl_00001.9.png
Issues:
 - ERROR: C:\Users\Roman\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.0.2.aar\bab547c3f1b8061ef9426f524a823a15\res\drawable-xhdpi-v4\abc_btn_switch_to_on_mtrl_00001.9.png failed to read PNG signature: file does not start with PNG signature

我试图解决这个问题的一些基本内容:

  1. 无效缓存/重启
  2. 删除gradle文件夹
android gradle android-gradle
9个回答
18
投票

问题可能是因为图像的错误扩展。 在我的情况下,该文件是一个JPEG图像,但它保存为未转换为PNG。在这种情况下,将更改扩展为真实的并转换为PNG然后重试。

对于instace,你有ic_logo.png,但它实际上是一个JPG图像。 您应该将其重命名为ic_logo.jpg并使用Photoshop之类的内容将图像转换为PNG格式。


4
投票

脚步

  1. build.gradle aaptOptions {cruncherEnabled = false}
  2. 删除C:\Users\.gradle\caches中的内容
  3. 重启Android Studio

3
投票

创建应用程序的.apk将分析所有资源,如果某些资源格式不正确或损坏,您将收到消息:

.png无法读取PNG签名:文件不以PNG签名开头

enter image description here

确保拥有正确的资源,您可以通过打开文件进行检查。


1
投票

我不确定它是否是有效的解决方案,但只删除错误消息中提到的文件有帮助。删除文件夹时,包含它的文件夹没有。


0
投票

这确实是错误的文件类型的结果,可以通过以正确的格式保存文件来修复。

我在PhoneGap Build中遇到了这个问题,并希望为其他可能遇到此问题的PhoneGap / Cordova用户留下2美分。

我的问题是我将旧的PhoneGap 6.x升级到8.0,看起来默认启动的行为已经改变了。它过去需要jpg作为默认启动,但在8.0上它会导致生成版本出现此错误。

之前有效:

<splash src="www/splash.jpg" />

现在你有2个选择。用png替换默认的splash如下:

<splash src="www/res/screen/android/screen-xhdpi-portrait.png" />

其他选项是完全删除默认的splash。


0
投票

要快速修复,请在app.gradle中将shrinkResources设置为false而不是true。希望这会有所帮助。如果不然后也添加这个aaptOptions {cruncherEnabled = false}


0
投票

如果您没有任何透明像素,则将文件重命名为.jpg对我有用。


0
投票

您可能使用过JPEG文件或其他图像文件格式。

使用PNG图像来解决错误。

可绘制目录只能有png类型的图像。


-2
投票

我有同样的错误,我做了一些步骤:

  1. 在paint中打开abc_btn_switch_to_on_mtrl_00001.9.png(图像)文件
  2. 现在选择png并保存为和重新保存在旧图像及其工作的可绘制和超重中

© www.soinside.com 2019 - 2024. All rights reserved.