Disable Android resource / image / PNG optimization

As mentioned in the Android documentation: http://developer.android.com/guide/topics/graphics/2d-graphics.html#drawables

Note: Image resources placed in res/drawable/ may be automatically optimized with lossless image compression by the aapt tool during the build process. For example, a true-color PNG that does not require more than 256 colors may be converted to an 8-bit PNG with a color palette. This will result in an image of equal quality but which requires less memory. So be aware that the image binaries placed in this directory can change during the build.

So if you want to reduce the size of your application you should either reduce the color-depth of your PNG files (this helps a lot) or switch to .JPG files wherever possible.


Finally there is an official way to disable the PNG cruncher with Gradle which hasn't been mentioned here yet:

  1. Edit main build.gradle to require gradle version 1.1.3 (or newer):

    buildscript {  
        repositories {  
            mavenCentral()  
        }  
        dependencies {  
            classpath 'com.android.tools.build:gradle:1.1.3'  
        }  
    }  
    
  2. In the individual apps's build.gradle, section android {}, insert:

    aaptOptions {  
        cruncherEnabled = false  
    }  
    

Reference: https://code.google.com/p/android/issues/detail?id=65335


Specifying PNG crunching is now a BuildType property and is disabled by default on debug builds:

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

Note: It's available from Android Studio 3.0 Canary 5 .