最適なユーザー エクスペリエンスを実現するには、アプリをできるだけ小さく、高速になるように最適化する必要があります。R8 と呼ばれるアプリ オプティマイザーは、未使用のコードとリソースを削除したり、コードを書き直してランタイム パフォーマンスを最適化したりすることで、アプリを効率化します。ユーザーへの影響は次のとおりです。
- 起動時間を短縮
- レンダリングとランタイム パフォーマンスの向上
- ANR の減少
アプリの最適化を有効にするには、次のコードに示すように、リリースビルドのアプリレベルのビルド スクリプトで isMinifyEnabled = true
(コードの最適化用)と isShrinkResources = true
(リソースの最適化用)を設定します。両方の設定を常に有効にすることをおすすめします。最適化によってプロジェクトのビルド時間が長くなり、コードの変更方法によってはデバッグが難しくなる可能性があるため、アプリの最適化は、公開前にテストするアプリの最終バージョン(通常はリリースビルド)でのみ有効にすることをおすすめします。
Kotlin
android { buildTypes { release { // Enables code-related app optimization. isMinifyEnabled = true // Enables resource shrinking. isShrinkResources = true proguardFiles( // Default file with automatically generated optimization rules. getDefaultProguardFile("proguard-android-optimize.txt"), ... ) ... } } ... }
Groovy
android { buildTypes { release { // Enables code-related app optimization. minifyEnabled true // Enables resource shrinking. shrinkResources true // Default file with automatically generated optimization rules. proguardFiles getDefaultProguardFile('proguard-android-optimize.txt') ... } } }
さらに小さいアプリ向けにリソース圧縮を最適化
Android Gradle プラグイン(AGP)のバージョン 8.12.0 では、リソースとコードの最適化を統合して、より小さく高速なアプリを作成することを目的とした、最適化されたリソース圧縮が導入されています。
最適化されたリソース圧縮を有効にする
AGP の 9.0.0 より前のバージョンで新しい最適化されたリソース圧縮パイプラインを有効にするには、プロジェクトの gradle.properties
ファイルに次の行を追加します。
android.r8.optimizedResourceShrinking=true
AGP 9.0.0 以降のバージョンを使用している場合は、android.r8.optimizedResourceShrinking=true
を設定する必要はありません。ビルド構成で isShrinkResources = true
が有効になっている場合、最適化されたリソース圧縮が自動的に適用されます。
R8 最適化設定を確認して構成する
R8 の最適化機能を最大限に活用するには、プロジェクトの gradle.properties
ファイルから次の行を削除します(存在する場合)。
android.enableR8.fullMode=false # Remove this line from your codebase.
アプリの最適化を有効にすると、スタック トレースが理解しにくくなります。特に、R8 でクラス名やメソッド名が変更された場合は、その傾向が顕著になります。ソースコードに正しく対応するスタック トレースを取得するには、元のスタック トレースを復元するをご覧ください。
R8 が有効になっている場合は、起動パフォーマンスをさらに向上させるために、起動プロファイルを作成することもおすすめします。
アプリの最適化を有効にしたときにエラーが発生した場合は、次の方法でエラーを修正できます。
- keep ルールを追加して、一部のコードをそのままにします。
- 最適化を段階的に採用する。
- 最適化に適したライブラリを使用するようにコードを更新します。