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%大きくなります、またはmy/PNGOUTWin最適化サイズより30%大きくなります。
私の目標は、最終的なパフォーマンスやメモリ要件などに影響する場合でも、.apkサイズを減らすことです。「ビルドプロセス」が.pngイメージを最適化しないようにするにはどうすればよいですか?
Android 2.2以降をターゲットにしています。
追伸:現在、EclipseからAndroidプロジェクトをビルドしていますが、後で自動ビルドに切り替えます(Ant?)。
JPG画像に関する注意: JPGは透明性がないため、機能しません。
Androidドキュメント: http://developer.Android.com/guide/topics/graphics/2d-graphics.html#drawables
注:res/drawable /に配置された画像リソースは、ビルドプロセス中にaaptツールによるロスレス画像圧縮で自動的に最適化される場合があります。たとえば、256色を超える必要のないトゥルーカラーPNGは、カラーパレットを使用して8ビットPNGに変換できます。これにより、同等の品質の画像が得られますが、必要なメモリは少なくなります。 したがって、このディレクトリに配置されたイメージバイナリはビルド中に変更される可能性があることに注意してください。
したがって、アプリケーションのサイズを小さくしたい場合は、PNGファイルの色深度を小さくするか(これは非常に役立ちます)、可能な限り.JPGファイルに切り替える必要があります。
最後に、GradleでPNGクランチャーを無効にする公式の方法がありますが、ここではまだ言及されていません。
メインの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
PNGクランチの指定はBuildTypeプロパティになり、デバッグビルドではデフォルトで無効になっています。
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>
Googleは最近、 aapt 0.9.1の新しいPNGプロセッサ をAndroid SDKビルドツールに導入しました。これは、aapt最適化後のPNGサイズの増加に関するこの問題を修正します。
今回のアップデートでは、build.gradle構成ファイルを次のように変更することで、Android Studio&GradleがPNGプロセッサを切り替えることができるようになりました。
Android {
..
..
aaptOptions.useAaptPngCruncher = false
}
この行を追加することにより、aaptは新しいPNGプロセッサを使用して、「最適化された」PNGファイルが元のPNGファイルよりも小さいかどうかを確認します。コンパイルしたAPKで4.8MBを削減できましたが、新しいビルド構成でバグや問題は発生していません。
更新:これは、Android Studioの以降のバージョンでは非推奨になりました。ChrisGが提供する回答を参照してください。