22

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以降をターゲットにしています。

PS: 現在、Eclipse から Android プロジェクトをビルドしていますが、後で自動ビルドに切り替える予定です (Ant?)。

JPG 画像に関する注意:透明度がないため、JPG は機能しません。

4

6 に答える 6

21

PNG クランチの指定はBuildTypeプロパティになり、デバッグ ビルドではデフォルトで無効になっています。

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

注: Android Studio 3.0 Canary 5から利用できます。

于 2017-07-01T04:56:15.723 に答える
0

Google は最近、Android SDK ビルド ツールのaapt 0.9.1 に新しい PNG プロセッサを導入しました。これにより、aapt 最適化後に PNG サイズが増加するというこの問題が修正されます。

今回の更新により、build.gradle 構成ファイルを次のように変更することで、Android Studio と Gradle で PNG プロセッサを切り替えることができるようになりました。

android {
    ..
    ..

    aaptOptions.useAaptPngCruncher = false
}

この行を追加することにより、aapt は新しい PNG プロセッサを使用して、「最適化された」PNG ファイルが元の PNG ファイルよりも小さいかどうかを確認します。コンパイルした APK で 4.8 MB を削減でき、新しいビルド構成でバグや問題は発生していません。

更新: これは、Android Studio の以降のバージョンでは非推奨になりました。ChrisG が提供する回答を参照してください。

于 2014-03-27T16:53:32.137 に答える