如何阻止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不起作用,因为它们没有透明度。
答案 0 :(得分:33)
最后有一种官方方法可以禁用使用Gradle的PNG cruncher,这里还没有提到:
将main build.gradle编辑为要求gradle版本1.1.3(或更新版本):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.3'
}
}
在各个应用的build.gradle中,安装android {},插入:
aaptOptions {
cruncherEnabled = false
}
参考: 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
有关更多信息,请访问: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提供的答案。