概要
アプリが対応している言語を app/build.gradle
に指定することで、参照しているライブラリ内の言語リソースのうち不要な言語リソースを削除することができる。
→ apk ファイルサイズを削減できる。
(指定しない場合、ライブラリ内の全ての言語リソースが apk に同梱される)
詳細
https://developer.android.com/studio/build/shrink-code.html?hl=ja#unused-alt-resources
を参照
アプリが日本語と英語しか対応していなくても、アプリが使っているライブラリ(AppCompat や Google Play サービスなど)に使用しない言語の文字列リソース(韓国語など)が含まれている事がある。
app/build.gradle に
android {
defaultConfig {
...
resConfigs "en", "fr"
}
}
などの指定を行うことにより、指定した言語以外のリソースファイルを削除し、apk ファイルサイズを削減することができる。
実際にやってみた
前提
- Android Studio 2.3.3 で
Empty Activity
のテンプレートで新規作成し、apk をリリースビルドで作成する。 - ApkAnalyzer でファイルサイズを確認する。
結果
apk サイズが 約 76KB 削減できた!
設定前(デフォルト)
- Raw FileSize : 1.4 MB
-
resources.arsc
の Raw FileSize : 221.3 KB -
resources.arsc
のstring
にさまざまな言語リソースが含まれていることがわかる
![before.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F9695%2Fe07322f7-ef4c-df6e-e83c-55d77f7cedbd.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d6efcf87bba0afe5420d77c3b0bdc2a7)
設定
app/build.gradle
に赤下線部の設定を加える(日本語と英語のみ対応する設定)
設定後
- Raw FileSize : 1.4 MB → 1.3 MB
-
resources.arsc
の Raw FileSize : 221.3 KB → 145.2 KB 約 76 KB 削減 -
resources.arsc
のstring
に指定した言語しか含まれていないことがわかる
![after.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F9695%2F50b1ee5e-1f2b-d3d2-bab7-d192f43f53ba.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=971a4d7a4c39a9448c337dd8e69963dd)
まとめ
app/build.gradle
に、アプリが対応している言語を resConfigs
で明記すると、外部ライブラリ内の不要な言語リソースを削減でき、 apk ファイル削減につながる。