Failed to read PNG signature: file does not start

2019-04-08 08:38发布

问题:

Gradle build failing with this error:

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

Some basic things i've tried to solve this issue:

  1. Invalidate caches/restart
  2. Deleting gradle folder

回答1:

The problem might be because of the wrong extension of images.
In my case the file was a JPEG image but it was saved as PNG not converted to. In this situation change extension to the real one and convert to PNG then retry.



回答2:

Steps

  1. In build.gradle

    aaptOptions { cruncherEnabled = false }

  2. Delete content inside C:\Users\.gradle\caches

  3. Restart Android Studio


回答3:

Creating the .apk of an application all the resources are analyzed, if some resource has an incorrect format or is corrup you will get the message:

.png failed to read PNG signature: file does not start with PNG signature

Be sure to have the correct resources, you can check it by opening your file.



回答4:

I'm not sure if it's a valid solution, but deleting only the file mentioned in the error message helped. While deleting the folder, containing it didn't.



回答5:

This is a result of wrong file type indeed and can be fixed by saving the files in correct format.

I ran into this issue with PhoneGap Build and wanted to leave my 2 cents for any other PhoneGap / Cordova user who might also run into this.

My problem was that I upgraded my old PhoneGap 6.x to 8.0 and it seems behaviour of the default splash has changed. It used to require jpg as a default splash, but on 8.0 it results in this error on production builds.

This worked before:

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

Now you have 2 options. Replace the default splash with png like this:

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

Other option is to remove default splash entirely.



回答6:

For a quick fix ,Make shrinkResources to false instead of true in app.gradle Hope this will help. if Not then also add this aaptOptions { cruncherEnabled = false }



回答7:

If you don't have any transparent pixels, then renaming the file to .jpg worked for me.



回答8:

You might have used a JPEG file or some other image file format.

Use PNG images to solve the error.

Drawable directory can only have png type of images.



回答9:

i have same error for slow i do some step:

  1. open abc_btn_switch_to_on_mtrl_00001.9.png (Image)file in paint
  2. now select png and save as and re-save in drawable and overweight in with old images and its work