DEX コードの最適化

DEX コードの最適化は、アプリのコンパイルの品質、サイズ、パフォーマンスをモニタリングして改善するのに役立つ Android Vitals の検出結果です。R8 または代替ツール(ProGuard 互換の最適化ツールやセカンダリ DEX 後処理ツールなど)を使用してコードを最適化および難読化すると、アプリの DEX サイズが縮小され、ランタイム パフォーマンスが向上し、メモリ フットプリントが最小限に抑えられます。

DEX(Dalvik Executable)ファイルには、アプリの実行に使用されるコンパイル済みコードが含まれています。通常、これにはコンパイル済みの C++ コードや .so ファイルではなく、Java コードや Kotlin コードが含まれます。

Android Vitals では、すべてのアプリとゲームの DEX コード最適化指標がレポートされますが、特定のサイズ要件を満たすアプリとゲームに対してのみしきい値が適用されます。

問題を検出する

Android Vitals は、アプリの DEX コードの最適化レベルが低い場合にアラートを発します。これには、R8 を使用するアプリやゲームの難読化、圧縮、最適化が含まれます。R8 を使用していないアプリの場合、Android Vitals は最適化、縮小、難読化の割合をチェックしようとしますが、必要に応じて難読化ヒューリスティックをプロキシとして使用します。

最適化のステータスをモニタリングする

Android Vitals は、アプリがコード最適化の最小定義割合を満たしていない場合に、Google Play Console を介してアラートを送信することで、アプリのパフォーマンスの改善をサポートします。圧縮、最適化、難読化の詳細な定義については、R8 構成アナライザを使用するをご覧ください。

AGP バージョン 8.10 以降の最新パッチでビルドされたアプリの場合、これらの割合は含まれている r8.json ファイルから取得されます。

AGP のバージョンが低い場合や、r8.json ファイルが含まれていない場合、割合は mapping.txt ファイルが含まれていればそこから計算されます。マッピング ファイルが利用できない場合は、DEX ヒューリスティックを使用して計算されます。

別のコード オプティマイザーで最適化されたアプリの場合、Android Vitals は、App Bundle 内で難読化されたクラス、メソッド、フィールドの割合を推定する分析を行います。

DEX の合計サイズの最小値

Android Vitals ではすべてのアプリのコード最適化指標が計算されますが、App Bundle が次の DEX サイズの合計要件を満たしている場合にのみアラートが届きます。

  • アプリ: Bundle に、非圧縮サイズで 10 MB 以上の DEX コードが含まれている
  • ゲーム: バンドルに、非圧縮サイズで 50 MB 以上の DEX コードが含まれている

Android Vitals にはアプリの DEX サイズが表示されますが、コマンドラインを使用してローカルで測定することもできます。

  unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

Android Vitals がスコアの計算に使用する正確なメタデータを調べるには、App Bundle から r8.json ファイルを抽出します。

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json