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 Arbeitsspeicherbedarf 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.
Lokale Messung der R8-Codeoptimierung
So messen Sie die unkomprimierte DEX-Größe Ihres App-Bundles lokal über die Befehlszeile:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
Wenn Ihre App mit R8 optimiert wird, können Sie die Optimierung, Verschleierung und Verkleinerung Ihres App-Bundles mit dem R8 Configuration Analyzer messen. Genaue Definitionen von Shrinking, Optimierung und Verschleierung finden Sie unter R8 Configuration Analyzer verwenden. Der Bericht „R8 Configuration Analyzer“ ist auch im R8-Analyse-Skill enthalten.
Wenn Sie die in Ihr App-Bundle eingebetteten Metadaten nach der Optimierung prüfen möchten (für AGP-Version 8.10 oder höher), extrahieren Sie die Datei r8.json:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
Problem beheben
Wenn Sie niedrige Werte für die DEX-Codeoptimierung haben, sehen Sie sich die Empfehlungen für Ihr Build-System und Ihren Optimierer an:
Android-Gradle-Plug-in und R8
Informationen zur Verbesserung der R8-DEX-Codeoptimierung finden Sie unter R8-Optimierung verbessern. Sie können auch den R8 Analyzer-Skill verwenden, um zusätzliche Informationen zur Optimierung der Keep-Regeln Ihrer App zu erhalten.
Build-Systeme ohne R8 und DEX-Postprozessoren
Wenn in Ihrer Build-Pipeline benutzerdefinierte Build-Tools oder sekundäre DEX-Postprozessoren verwendet werden, führen Sie die folgenden Schritte aus, um die Optimierung Ihrer App zu verbessern:
- Öffnen Sie Ihr App-Bundle in Android Studio und sehen Sie es sich im APK Analyzer an.
- Wählen Sie alle
.dex-Dateien aus. - Achten Sie genau auf die Dateien mit der größten Größe, wenn Sie die Schaltfläche „Namen entschlüsseln“ aktivieren (Hinweis: Dazu müssen Sie eine
mapping.txt-Datei hochladen). Wenn einige dieser Dateien auch nach der Verschleierung groß bleiben, sind sie wahrscheinlich von Keep-Regeln für das gesamte Paket betroffen. - Suchen Sie in der Datei
proguard-rules.pro,configuration.txtoder dem Äquivalent für Ihren Optimierer, wenn Sie R8 nicht verwenden, nach Keep-Regeln, die mit den Paketen übereinstimmen, die nicht verschleiert werden. Wenncom.foo.beispielsweise ein großes Paket in Ihrem DEX ist, suchen Sie nach Keep-Regeln im Format-keep com.foo.**oder-keep com.foo.bar.**. - Die Regeln für die Aufbewahrung von Bibliotheksinhalten sind möglicherweise nicht so einfach zu identifizieren. Wenn Sie vermuten, dass eine Regel für die Verwendung einer Bibliothek die Optimierung beeinträchtigt, können Sie sie lokal validieren. Fügen Sie sie dazu einer eigenständigen Beispiel-App mit einer aktuellen Version von AGP hinzu und untersuchen Sie sie mit dem R8 Configuration Analyzer.