Die DEX-Codeoptimierung ist ein Android Vitals-Ergebnis, mit dem Sie die Kompilierungsqualität, Größe und Leistung Ihrer App im Blick behalten und verbessern können. Wenn Sie Ihren Code mit R8 oder alternativen Tools (z. B. ProGuard-kompatiblen Optimierern oder sekundären DEX-Postprozessoren) optimieren und verschleiern, wird die DEX-Größe Ihrer App reduziert, die Laufzeitleistung verbessert und der Arbeitsspeicherverbrauch minimiert.
DEX-Dateien (Dalvik Executable) enthalten den kompilierten Code, der zum Ausführen Ihrer App verwendet wird. Dazu gehört in der Regel Java- und Kotlin-Code, im Gegensatz zu kompiliertem C++-Code oder .so-Dateien.
In Android Vitals werden Messwerte zur DEX-Codeoptimierung für alle Apps und Spiele gemeldet. Grenzwerte werden jedoch nur für Apps und Spiele durchgesetzt, die bestimmte Größenanforderungen erfüllen.
Problem erkennen
Android Vitals kann Sie benachrichtigen, wenn die DEX-Codeoptimierungsstufen Ihrer App niedrig sind. Dazu gehören die Verschleierung, das Verkleinern und die Optimierung von Apps und Spielen, die R8 verwenden. Bei Apps, die R8 nicht verwenden, versucht Android Vitals, die Optimierungs-, Verkleinerungs- und Verschleierungsraten zu prüfen. Bei Bedarf wird jedoch auf Verschleierungsheuristiken als Proxy zurückgegriffen.
Optimierungsstatus überwachen
Android Vitals können Ihnen helfen, die Leistung Ihrer App zu verbessern, indem Sie über die Play Console benachrichtigt werden, wenn Ihre App die Mindestprozentsätze für die Codeoptimierung nicht erreicht. Ausführliche Definitionen von Shrinking, Optimierung und Verschleierung finden Sie unter R8 Configuration Analyzer verwenden.
Bei Apps, die mit dem neuesten Patch von AGP-Version 8.10 oder höher erstellt wurden, werden diese Prozentsätze aus der enthaltenen r8.json-Datei abgerufen.
Bei niedrigeren Versionen von AGP oder wenn die Datei r8.json nicht enthalten ist, werden die Prozentsätze aus der Datei mapping.txt berechnet, sofern sie enthalten ist, oder mithilfe von DEX-Heuristiken, wenn die Zuordnungsdatei nicht verfügbar ist.
Bei Apps, die mit einem alternativen Code-Optimierer optimiert werden, wird in Android Vitals analysiert, wie viel Prozent der Klassen, Methoden und Felder im App-Bundle verschleiert sind.
Mindestgröße für DEX insgesamt
Android Vitals berechnet Messwerte zur Codeoptimierung für alle Apps. Sie erhalten jedoch nur Benachrichtigungen, wenn Ihr App-Bundle die folgenden Anforderungen an die DEX-Gesamtgröße erfüllt:
- Apps: Das Bundle enthält mindestens 10 MB DEX-Code (ungedrückt).
- Spiele: Das Bundle enthält mindestens 50 MB DEX-Code (ungedrückt).
In Android Vitals wird die DEX-Größe Ihrer App angezeigt. Sie können sie aber auch lokal über die Befehlszeile messen:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
Wenn Sie die genauen Metadaten sehen möchten, die von Android Vitals zur Berechnung Ihrer Werte verwendet werden, extrahieren Sie die r8.json-Datei aus Ihrem App-Bundle:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json