Optymalizacja kodu DEX

Optymalizacja kodu DEX to funkcja Android Vitals, która pomaga monitorować i poprawiać jakość kompilacji, rozmiar i wydajność aplikacji. Optymalizacja i zaciemnianie kodu za pomocą R8 lub alternatywnych narzędzi (takich jak optymalizatory zgodne z ProGuard lub procesory końcowe DEX) zmniejsza rozmiar pliku DEX aplikacji, poprawia wydajność środowiska wykonawczego i minimalizuje wykorzystanie pamięci.

Pliki DEX, czyli Dalvik Executable, zawierają skompilowany kod używany do uruchamiania aplikacji. Zazwyczaj obejmuje on kod Java i Kotlin, a nie skompilowany kod C++ ani pliki .so.

Raporty Android Vitals zawierają dane dotyczące optymalizacji kodu DEX w przypadku wszystkich aplikacji i gier, ale progi są egzekwowane tylko w przypadku aplikacji i gier, które spełniają określone wymagania dotyczące rozmiaru.

Wykrywanie problemu

Android Vitals może Cię powiadomić, gdy poziom optymalizacji kodu DEX w aplikacji jest niski. Obejmuje to zaciemnianie kodu, zmniejszanie rozmiaru i optymalizację w przypadku aplikacji i gier, które korzystają z R8. W przypadku aplikacji, które nie korzystają z R8, Android Vitals próbuje sprawdzić optymalizację, zmniejszanie i zaciemnianie, ale w razie potrzeby stosuje heurystykę zaciemniania jako przybliżoną wartość.

Monitorowanie stanu optymalizacji

Android Vitals może pomóc Ci poprawić działanie aplikacji, wysyłając alert w Konsoli Play za każdym razem, gdy aplikacja nie spełnia minimalnych zdefiniowanych wartości procentowych optymalizacji kodu. Szczegółowe definicje zmniejszania, optymalizacji i zaciemniania znajdziesz w artykule Korzystanie z analizatora konfiguracji R8.

W przypadku aplikacji utworzonych przy użyciu najnowszej poprawki AGP w wersji 8.10 lub nowszej te odsetki są pobierane z dołączonego pliku r8.json.

W przypadku starszych wersji AGP lub gdy plik r8.json nie jest uwzględniony, odsetki są obliczane na podstawie pliku mapping.txt (jeśli jest uwzględniony) lub przy użyciu heurystyki DEX (jeśli plik mapowania jest niedostępny).

W przypadku aplikacji zoptymalizowanych za pomocą alternatywnego optymalizatora kodu Android Vitals przeprowadza analizę, aby oszacować odsetek klas, metod i pól, które są zaciemnione w pakiecie aplikacji.

Minimalne rozmiary plików DEX

Android Vitals oblicza dane optymalizacji kodu dla wszystkich aplikacji, ale alerty otrzymasz tylko wtedy, gdy Twój pakiet aplikacji spełnia te wymagania dotyczące całkowitego rozmiaru plików DEX:

  • Aplikacje: pakiet zawiera co najmniej 10 MB kodu DEX (rozmiar po rozpakowaniu).
  • Gry: pakiet zawiera co najmniej 50 MB kodu DEX (rozmiar po rozpakowaniu).

Dane Android Vitals pokazują rozmiar plików DEX aplikacji, ale możesz też zmierzyć go lokalnie za pomocą wiersza poleceń:

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

Aby sprawdzić dokładne metadane, których Android Vitals używa do obliczania wyników, wyodrębnij plik r8.json z pakietu aplikacji:

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