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

时间:2012-10-17 08:12:36

标签: android android-image android-resources android-build

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

我有一个包含以下res目录的Android项目:

- /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尺寸,整体尺寸减少了20%以上。当我构建.apk文件时,图像由构建过程“优化”,整体大小现在比初始大小高10%,或高于我/ PNGOUTWin优化大小30%。

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

我的目标是Android 2.2及更高版本。

P.S。:我目前正在从Eclipse构建我的Android项目,但我稍后会切换到自动构建(Ant?)。

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

6 个答案:

答案 0 :(得分:33)

最后有一种官方方法可以禁用使用Gradle的PNG cruncher,这里还没有提到:

  1. 将main 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  
    }  
    
  3. 参考: https://code.google.com/p/android/issues/detail?id=65335

答案 1 :(得分:15)

指定PNG运行现在是 BuildType 属性,默认情况下在调试版本中被禁用:

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

注意:可以从Android Studio 3.0 Canary 5 获取。

答案 2 :(得分:2)

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

的android块的行上方添加

ionic / Cordova项目中:root_folder_Of_App / platforms / android / app / build.gradle

在Android项目中:app / build.gradle

enter image description here

有关更多信息,请访问:https://androidstudio.googleblog.com/2017/06/android-studio-30-canary-5-is-now.html

答案 3 :(得分:1)

如Android文档中所述:http://developer.android.com/guide/topics/graphics/2d-graphics.html#drawables

  

注意:放置在res / drawable /中的图像资源可以通过aapt工具在无损图像压缩期间自动优化   构建过程。例如,不需要的真彩色PNG   超过256种颜色可以转换为带有颜色的8位PNG   调色板。这将产生质量相同的图像   需要更少的内存。 所以请注意放置的图像二进制文件   此目录可以在构建期间更改

因此,如果您想减小应用程序的大小,您应该减少PNG文件的颜色深度(这会有很大帮助)或尽可能切换到.JPG文件。

答案 4 :(得分:1)

Android Studio :自Gradle Android插件1.0.0开始:

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

Eclipse :覆盖在build.xml中编写的crunch任务:

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

答案 5 :(得分:0)

Google最近在Android SDK Build Tools中引入了new PNG processor in aapt 0.9.1,修复了aapt优化后增加PNG大小的问题。

通过此次更新,Android Studio&amp; Gradle在您的build.gradle配置文件中进行以下更改时在PNG处理器之间切换:

android {
    ..
    ..

    aaptOptions.useAaptPngCruncher = false
}

通过添加此行,aapt使用新的PNG处理器,在其中检查“优化的”PNG文件是否小于原始PNG文件。我在编译好的APK中减少了4.8 MB,并且没有遇到任何新构建配置的错误/问题。

更新:在Android Studio的更高版本中已弃用此功能。请参阅ChrisG提供的答案。