禁用Android资源/图像/ PNG优化

如何防止Android“构build过程”优化.png图像?

我有Android项目与以下res目录:

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

这些目录包含许多.png文件 。 我使用PNGOUTWin优化了PNG尺寸,整体尺寸减less了20%以上。 当我build立.apk文件时, 图像被构build过程“优化”,整体尺寸现在比初始尺寸高10%,比我的/ PNGOUTW优化尺寸高30%。

我的目标是减小.apk大小,即使它会影响最终性能,内存要求等。 如何防止“构build过程”优化.png图像?

我的目标是Android 2.2及以上。

PS目前从Eclipse构build我的Android项目,但稍后将切换到自动生成(Ant?)

关于JPG图片的注意事项: JPG不会工作,因为它们没有透明度。

Solutions Collecting From Web of "禁用Android资源/图像/ PNG优化"

正如Android文档中提到的: http : //developer.android.com/guide/topics/graphics/2d-graphics.html#drawables

:放置在res / drawable /中的图像资源可以在构build过程中通过aapt工具进行无损图像压缩自动进行优化。 例如,不需要超过256色的真彩色PNG可以通过调色板转换为8位PNG。 这将导致质量相同的图像,但需要较less的内存。 因此,请注意,放置在此目录中的图像二进制文件在构build期间可能会更改

所以,如果你想减小你的应用程序的大小,你应该减lessPNG文件的颜色深度(这有很大的帮助),或者尽可能地切换到.JPG文件。

最后还有一个正式的方法,用Gradle来禁用PNG cruncher,这里还没有提到:

  1. 编辑主要build.gradle要求gradle版本1.1.3(或更新):

     buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.1.3' } } 
  2. 在个别应用程序的build.gradle,部分android {}中,插入:

     aaptOptions { cruncherEnabled = false } 

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

指定PNG crunching现在是一个BuildType属性,并且在debugging版本上默认是禁用的:

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

注意:它可以从Android Studio 3.0 Canary 5中获得 。

ANDROID STUDIO :由于Gradle Android插件1.0.0:

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

ECLIPSE :覆盖在build.xml中编写这个紧缩任务:

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

谷歌最近在Android SDK构build工具中的aapt 0.9.1中引入了一款新的PNG处理器,可以在优化后优化PNG大小。

有了这个更新,Android Studio&Gradle现在可以在您的build.gradleconfiguration文件中进行以下更改,从而在PNG处理器之间切换:

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

通过添加这一行,aapt使用新的PNG处理器来检查“优化的”PNG文件是否比原始的PNG文件小。 我已经能够在我编译的APK中减less4.8 MB,并且没有遇到新的构buildconfiguration的任何错误/问题。

更新:这在Android Studio的更高版本中已被弃用。 请参考ChrisG提供的答案。