¿Cómo puedo prevenir la Android «proceso de construcción» a partir de la optimización .las imágenes png?

Tengo un proyecto Android con las siguientes res directorios:

- /res/
- /res/drawable
- /res/drawable-hdpi
- /res/drawable-hdpi-v5
- /res/drawable-ldpi
- /res/drawable-ldpi-v5
- /res/drawable-mdpi
- /res/drawable-mdpi-v5

Estos directorios contienen muchos .los archivos png. Yo optimizar los PNG tamaños con PNGOUTWin, y el tamaño total es reducido en más de un 20%. Cuando voy a construir en el .archivo apk, la las imágenes son «optimizado» por el proceso de creación y el tamaño total es ahora un 10% por encima del tamaño inicial, o 30% por encima de mi/PNGOUTWin tamaño optimizado.

Mi meta es reducir la .apk tamaño, incluso si va a afectar el rendimiento final, los requisitos de memoria, etc. ¿Cómo puedo evitar que el «proceso de construcción» a partir de la optimización .las imágenes png?

Estoy orientación de Android 2.2 y superiores.

P. S.: actualmente estoy construyendo mi proyecto Android desde Eclipse, pero voy a cambiar a la generación automática más tarde (Ant?).

Nota sobre las imágenes JPG: JPG no va a funcionar, porque no tienen transparencia.

InformationsquelleAutor Maris B. | 2012-10-17

5 Comentarios

  1. 1

    Como se mencionó en el Android documentación: http://developer.android.com/guide/topics/graphics/2d-graphics.html#drawables

    Nota: Image recursos colocados en res/imagen/puede ser optimizado automáticamente con compresión sin pérdida de imágenes por la aapt herramienta durante el
    proceso de construcción. Por ejemplo, un color verdadero PNG que no requiere
    más de 256 colores puede ser convertido a un PNG de 8 bits con un color
    la paleta. Esto dará como resultado una imagen de la misma calidad, pero que
    requiere menos memoria. Por lo que ser conscientes de que la imagen binarios colocado en
    este directorio puede cambiar durante la construcción de.

    Así que si quieres reducir el tamaño de su solicitud, usted debe reducir la profundidad de color de los archivos en formato PNG (esto ayuda mucho) o cambiar .Los archivos JPG siempre que sea posible.

    • Archivos PNG de 8 bits con canal alfa-bastante sombras, muchos colores, tamaño de 200×200 se ve feo. No es perfecto. En la actualidad el uso de Photoshop + Web Image Guru + PNGOUTWin el postproceso.
    • JPG no funcionan porque no tienen transparencia.
    • Sí, usted puede tener gradiente de efectos, efectos de sombra, etc.. como en PNG en JPG, por lo que sólo he mencionado el uso de jpg siempre que sea posible.
    • La aceptación de su respuesta, porque de hecho, las imágenes que se ve bonito en PNG de 8 bits de formato no son optimizados por la «construcción». Sin embargo terminé usando Ant + 7-zip + original Png.
    • esta respuesta no responde la pregunta, no entiendo cómo se me aceptaron
    • Peor aún, se sugiere que no se puede hacer.

  2. 33

    Por último, existe una forma oficial para deshabilitar el PNG cruncher con Gradle, que aún no se han mencionado aquí todavía:

    1. Principal de edición de construir.gradle para exigir gradle versión 1.1.3 (o más reciente):

      buildscript {  
          repositories {  
              mavenCentral()  
          }  
          dependencies {  
              classpath 'com.android.tools.build:gradle:1.1.3'  
          }  
      }  
    2. En las aplicaciones individuales a construir.gradle, la sección de android {}, insertar:

      aaptOptions {  
          cruncherEnabled = false  
      }  

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

    • Wow esto acaba de cortar alrededor de 1 min de tiempo de compilación para mi las versiones de depuración
    • Es posible hacerlo sólo para generación de depuración? Tal vez se pueda reducir el tiempo de construcción
  3. 15

    La especificación PNG crujido es ahora un BuildType propiedad y está desactivado por defecto en las versiones de depuración:

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

    Nota: está disponible desde Android Studio 3.0 Canarias 5 .

    • Gracias. Después de un montón de tiempo perdido a su única respuesta me ayudó.
    • Glade para ayuda. Gracias 🙂
  4. 1

    Android Studio: Desde Gradle Android plugin 1.0.0:

    android {
    ...
      aaptOptions {
        useNewCruncher false
      }
    ....
    }

    Eclipse: Reemplazar el crujido de la tarea de escribir esto en tu build.xml:

    <target name="-crunch">
       <echo message="This will skip PNG optimization"/>
    </target>
  5. 0

    Google ha presentado recientemente un nueva PNG procesador en aapt 0.9.1 en el SDK de Android Construir Herramientas que corrige este problema de aumento de PNG tamaños después de la aapt de optimización.

    Con esta actualización, ahora es posible para Android Studio & Gradle para cambiar entre el formato PNG de procesadores con el siguiente cambio en su construcción.gradle archivo de configuración:

    android {
        ..
        ..
    
        aaptOptions.useAaptPngCruncher = false
    }

    Agregando esta línea, aapt utiliza el nuevo formato PNG de procesador en el que se comprueba si el «optimizado» los archivos PNG son más pequeños que el original de los archivos PNG. Yo era capaz de reducir 4.8 MB en mi compilado APK y no han encontrado ningún bugs/problemas con la nueva configuración de generación.

    ACTUALIZACIÓN: Este ha sido desaprobado en versiones posteriores de Android Studio. Por favor refiérase a la respuesta proporcionada por ChrisG.

    • Yo creo que eso es ya obsoletas como el de ahora, el uso de la respuesta de @ChrisG

Dejar respuesta

Please enter your comment!
Please enter your name here