Failed to read PNG signature: file does not start with PNG signature

AndroidGradleAndroid Gradle-Plugin

Android Problem Overview


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

Android Solutions


Solution 1 - Android

It's likely a JPG renamed to a PNG file, not an actual PNG file
The problem could 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.

For instance, you have ic_logo.png but it's actually a JPG image.
You should rename it back to ic_logo.jpg and use something like Photoshop to convert the image to PNG format.

Solution 2 - Android

Steps

  1. In build.gradle

    aaptOptions { cruncherEnabled = false }

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

  3. Restart Android Studio

Solution 3 - Android

android {
    buildTypes {
        release {
            crunchPngs false // or true
        }
    }
}







 buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            crunchPngs false // or true

            lintOptions {
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

Solution 4 - Android

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

enter image description here

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

Solution 5 - Android

This occurs due to the incorrect extension given to the image. For example, the image is jpg and the extension given is png.

Solutions:

  1. Add { cruncherEnabled = false } in build.gradle
  2. Convert the image into png rather than just changing the extension.

Solution 6 - Android

Failed to read PNG signature - Just put 1 line in your build.gradle

 buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        crunchPngs false  // Paste this line
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

Solution 7 - Android

I had the same issue, solved by converting the images to webP from Android studio right-click on the image -> tap on Convert to WebP

the conversion will handle file formating and also reduce the size of the PNG

Solution 8 - Android

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.

Solution 9 - Android

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.

Solution 10 - Android

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 }

Solution 11 - Android

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

Solution 12 - Android

If you are using an online platform to generate App Icon(launcher_icon), then use PNG Format or First convert JPEG to PNG and then used APP ICON GENERATOR

Solution 13 - Android

In my case also there was a jpg file instead of png, so I changed my extension and solve my problem.

Solution 14 - Android

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.

Solution 15 - Android

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

enter image description here

Solution 16 - Android

I've had the same issue. To solve it just restart your Android Studio and build the gradle file again.

Solution 17 - Android

You can add code in node_modules/react-native/react.gradle. After doFirst

doLast {
def moveFunc = { resSuffix ->
File originalDir = file("$buildDir/generated/res/react/release/${resSuffix}");
if (originalDir.exists()) {
File destDir = file("$buildDir/../src/main/res/${resSuffix}");
ant.move(file: originalDir, tofile: destDir);
}
}
moveFunc.curry("drawable-ldpi").call()
moveFunc.curry("drawable-mdpi").call()
moveFunc.curry("drawable-hdpi").call()
moveFunc.curry("drawable-xhdpi").call()
moveFunc.curry("drawable-xxhdpi").call()
moveFunc.curry("drawable-xxxhdpi").call()
moveFunc.curry("raw").call()
}

check it if it not fix issue after remove drawable folder github enter link description here

Solution 18 - Android

I was able to fix it permanently.

I created a new blank expo project, then I added a new app icon (correct png format), then I ejected from expo.

I then copied the mipmap-* folders from the blank project to my real project. It all worked perfectly.

Solution 19 - Android

You can open the images with windows win10 'Paint', then you can save as .png and overrite it, It will solve the problem

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionOoba EldaView Question on Stackoverflow
Solution 1 - AndroidMahdi-MalvView Answer on Stackoverflow
Solution 2 - AndroidDiego VenâncioView Answer on Stackoverflow
Solution 3 - AndroidKeshav GeraView Answer on Stackoverflow
Solution 4 - AndroidJorgesysView Answer on Stackoverflow
Solution 5 - AndroidSaqib NaseebView Answer on Stackoverflow
Solution 6 - AndroidKumar SantanuView Answer on Stackoverflow
Solution 7 - AndroidBennyPView Answer on Stackoverflow
Solution 8 - AndroidVikas V ShastryView Answer on Stackoverflow
Solution 9 - AndroidFirzeView Answer on Stackoverflow
Solution 10 - AndroidPrinkal KumarView Answer on Stackoverflow
Solution 11 - AndroidVarun BarveView Answer on Stackoverflow
Solution 12 - AndroidpaulView Answer on Stackoverflow
Solution 13 - AndroidNeetesh mauryaView Answer on Stackoverflow
Solution 14 - AndroidOoba EldaView Answer on Stackoverflow
Solution 15 - AndroidBaraiya NayanView Answer on Stackoverflow
Solution 16 - Androidparag barsarView Answer on Stackoverflow
Solution 17 - AndroidJameel NazirView Answer on Stackoverflow
Solution 18 - AndroidJoseph AjiboduView Answer on Stackoverflow
Solution 19 - AndroidUcdemirView Answer on Stackoverflow