Optimierung testen und Fehler beheben

Prüfen Sie nach der Aktivierung der App-Optimierung, ob Ihre App wie vorgesehen funktioniert und die R8-Konfiguration die gewünschte Leistung erzielt. Die allgemeinen Schritte sind:

  1. Testen Sie die kritischen Nutzerpfade (CUJs) Ihrer App: Achten Sie beispielsweise darauf, dass sich Nutzer anmelden und andere wichtige Aufgaben ausführen können.
  2. Leistungssteigerungen mithilfe von Benchmarks messen: Führen Sie vor und nach der Aktivierung der App-Optimierung einen Benchmark für Ihre App durch.

Wenn Probleme auftreten, bietet R8 Tools zur Fehlerbehebung. Wenn Sie ein Problem mit R8 nicht beheben können, melden Sie es als Fehler.

Allgemeine Tipps

Probleme mit R8 sind oft spezifisch für Ihre App. Hier sind einige allgemeine Tipps, die das Debuggen erleichtern:

  • Deaktivierung der Verschleierung: R8 verschleiert Code im Rahmen des Optimierungsprozesses. Obfuscierung ist in der Regel nicht die Ursache für Fehler, aber sie erschwert das Debugging. Fügen Sie der Datei mit den Regeln zum Beibehalten die Flags ‑dontobfuscate und ‑dontoptimize hinzu, um problematischen Code zu finden.
  • Reflexion prüfen:Wenn Sie auf die Ausnahme Kein Element dieses Typs stoßen, z. B.

    Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace ,

    Eine Ausnahme bedeutet in der Regel, dass das betreffende Feld über Reflection verwendet wird und Sie eine Beibehaltungsregel hinzufügen müssen.

  • Bytecode prüfen:Für die meisten R8-Probleme ist eine Bytecode-Prüfung erforderlich. Sie können dazu Tools wie den APK-Analysator verwenden.

Prüfen, welche Regeln angewendet werden

Wenn Sie einen vollständigen Bericht zu allen Regeln ausgeben möchten, die R8 beim Erstellen Ihres Projekts anwendet, fügen Sie Folgendes in die Modulproguard‑rules.pro-Datei Ihrer App ein:

-printconfiguration <output-dir>/<report-name>.txt

Sie können einen beliebigen Pfad und Dateinamen angeben. Wenn Sie keinen Pfad oder Dateinamen angeben, gibt R8 den Richtlinienbericht unter <module-name>/build/outputs/mapping/<build-type>/configuration.txt aus.

Verstehen, warum Code beibehalten wurde

Wenn Sie Code sehen, der nicht entfernt wurde, obwohl Sie das erwartet hatten, können Sie mithilfe der Konfigurationsoption ‑whyareyoukeeping herausfinden, warum der Code beibehalten wurde. R8 gibt einen Pfad vom beibehaltenen Code zu einem der Einstiegspunkte Ihrer App aus. Weitere Informationen finden Sie in der ‑whyareyoukeeping-Dokumentation im Proguard-Handbuch.

Ursprünglichen Stack-Trace wiederherstellen

Der von R8 verarbeitete Code wird auf verschiedene Arten geändert, sodass sich der Stack-Trace nicht mehr auf den ursprünglichen Code bezieht. So können sich beispielsweise Zeilennummern und die Namen von Klassen und Methoden ändern. Zum Wiederherstellen des ursprünglichen Stack-Traces bietet R8 das Befehlszeilentool „retrace“ an, das im Paket mit den Befehlszeilentools enthalten ist.

Wenn Sie ReTrace verwenden möchten, geben Sie eine Zuordnungsdatei und eine Stack-Trace-Datei an. Die Zuordnungsdatei mit dem Namen mapping.txt wird automatisch mit Ihrem Android App Bundle (AAB) gebündelt. Weitere Informationen finden Sie in der Retrace-Dokumentation und im Play Console-Hilfeartikel zum Entfernen von Obfuscierung aus Stack-Traces bei Abstürzen.