Build-Leistung mit Build Analyzer beheben

Verwenden Sie den Build Analyzer, um die Build-Leistung Ihres Projekts zu überprüfen. Build Analyzer versucht für jeden durchgeführten Build, die wichtigsten Informationen anzuzeigen, damit Sie Regressionen in Ihrer Build-Leistung schnell identifizieren und beheben können.

Weitere Strategien zur Verbesserung der Build-Leistung finden Sie unter Build-Geschwindigkeit optimieren.

Erste Schritte

Jedes Mal, wenn Sie Ihre Anwendung erstellen, erstellt das Build-Analysetool einen Bericht und zeigt im Fenster Build die Daten aus dem neuesten Bericht an.

Gehen Sie wie folgt vor, um zu beginnen:

  1. Falls noch nicht geschehen, haben Sie folgende Möglichkeiten, Ihre App zu erstellen:
    • Klicken Sie in der Menüleiste auf Erstellen > Projekt erstellen.
    • Klicken Sie zum Erstellen eines Android App Bundles oder APKs in der Menüleiste auf Build > Build Bundle(s) / APK(s) > Build Bundle(s) oder Build > Build Bundle(s) / APK(s) > Build APK(s).
  2. Wählen Sie zum Öffnen des Fensters Build in der Menüleiste View > Tool Windows > Build (Ansicht > Toolfenster > Build) aus.
  3. Wenn Sie den Build-Bericht im Build Analyzer aufrufen möchten, klicken Sie im Fenster Build auf den Tab Build Analyzer.

Die von Build Analyzer angezeigten Daten können sich je nach Builds ändern. Daher ist es hilfreich, Ihr Projekt mehrmals zu erstellen und die Daten zu vergleichen, um Muster zu erkennen.

Plug-ins mit Aufgaben zur Bestimmung der Build-Dauer ansehen

Wenn Sie Build Analyzer nach Abschluss eines Builds zum ersten Mal öffnen, wird im Fenster eine Übersicht über die Build-Analyse angezeigt (siehe Abbildung 1).

Abbildung 1: Die Übersichtsseite von Build Analyzer enthält eine Zusammenfassung der Ergebnisse.

Um eine Aufschlüsselung der Plug-ins mit Aufgaben zu sehen, die die Build-Dauer bestimmen, klicken Sie auf der Übersichtsseite auf Plug-ins mit Aufgaben, die sich auf die Build-Dauer auswirken. Sie können auch Tasks aus dem Drop-down-Menü auswählen und bestätigen, dass Sie nach Plug-in gruppieren. Im Diagramm werden die Plug-ins und ihre zugehörigen Aufgaben nach der Gesamtzeit sortiert, die sie für ihre Ausführung benötigen.

Abbildung 2: Build Analyzer bietet eine Aufschlüsselung der Plug-ins, die sich auf die Build-Dauer auswirken.

Aufgaben ansehen, die die Build-Dauer bestimmen

Klicken Sie auf der Übersichtsseite auf Aufgaben, die sich auf die Build-Dauer auswirken oder im Drop-down-Menü auf Aufgaben, um eine Aufschlüsselung der Aufgaben zu sehen, die zur Build-Dauer beitragen. Wenn Ihr Projekt AGP 8.0 oder höher verwendet, werden die Aufgaben standardmäßig nach Kategorie gruppiert. So lassen sich Bereiche, die sich auf die Build-Dauer auswirken, leichter identifizieren. Klicken Sie auf die einzelnen untergeordneten Aufgaben, um mehr über ihre Ausführung zu erfahren.

Abbildung 3: Das Build-Analysetool bietet eine Aufschlüsselung der Aufgaben, die am häufigsten für die Build-Dauer verantwortlich sind.

Warnungen prüfen

Wenn Build Analyzer feststellt, dass einige Aufgaben für eine effizientere Ausführung konfiguriert werden könnten, wird eine Warnung ausgegeben. Wenn Sie alle Warnungen sehen möchten, die Build Analyzer für Ihren Build identifiziert hat, klicken Sie auf der Übersichtsseite auf Alle Warnungen oder wählen Sie im Drop-down-Menü Warnungen aus.

Einige Warnungen enthalten den Link Bericht erstellen (siehe Abbildung 4). Wenn Sie auf den Link Bericht generieren klicken, wird ein Dialogfeld mit zusätzlichen Informationen angezeigt, die dem Plug-in-Entwickler helfen könnten, das Problem in einer neuen Version des Plug-ins zu beheben. Klicken Sie auf Copy (Kopieren), um den Text in der Zwischenablage zu speichern. So können Sie die Informationen leichter in einen Fehlerbericht für den Plug-in-Entwickler einfügen.

Abbildung 4: Detaillierte Informationen zu Build Analyzer-Warnungen.

Warnungstypen

Das Build-Analysetool meldet die folgenden Warnungstypen:

  • Immer ausführende Aufgaben: Eine immer ausgeführte Aufgabe führt dazu, dass auf jedem Build andere Aufgaben ausgeführt werden. Dies ist nicht erforderlich. Für diese Warnung gibt es zwei Hauptgründe:

    • (gängiger) Sie haben die Ein- und Ausgaben der Aufgaben nicht richtig deklariert. In diesem Fall sollten Sie die Ein- und Ausgaben für Ihre Aufgaben ordnungsgemäß deklarieren. Dies bedeutet, dass Sie Ein- und Ausgaben selbst deklarieren, wo es möglich ist, oder Plug-in-Versionen ändern, wenn die Aufgaben, die die Warnung auslösen, von Plug-ins von Drittanbietern stammen.

    • (Weniger üblich) Für eine Aufgabe ist upToDateWhen auf "false" gesetzt. Dies sollte vermieden werden. Es könnte sein, dass eine Logik als falsch ausgewertet wird oder dass upToDateWhen hartcodiert als falsch codiert ist. Wenn eine Logik einen falschen Wert ergibt, könnte dieses Ergebnis beabsichtigt sein und Sie können die Warnung ignorieren. Wenn upToDateWhen hartcodiert ist und auf „false“ gesetzt ist, sollten Sie die Hartcodierung aus Ihrem Code entfernen.

  • Probleme beim Einrichten von Aufgaben: Diese Warnung wird für Aufgaben generiert, die dasselbe Verzeichnis wie die Ausgaben deklarieren. Das bedeutet, dass die Ausgaben dieser Aufgaben zwischen Builds höchstwahrscheinlich nicht beibehalten werden und diese Aufgaben immer ausgeführt werden, auch wenn keine Änderungen vorgenommen wurden. Um diese Warnung zu umgehen, sollten Sie unterschiedliche Ausgabeverzeichnisse für Ihre Aufgaben angeben. Dazu müssen Sie selbst verschiedene Ausgabeverzeichnisse deklarieren, in denen dies möglich ist, oder Plug-in-Versionen ändern, wenn die Aufgaben, die die Warnung auslösen, von Plug-ins von Drittanbietern stammen.

  • Nicht inkrementeller Annotationsprozessor: Diese Warnung wird in Situationen generiert, in denen ein Annotationsprozessor nicht inkrementell ist und bewirkt, dass die Aufgabe JavaCompile immer nicht inkrementell ausgeführt wird. Wechseln Sie zu einem inkrementellen Annotationsprozessor, um diese Warnung zu umgehen.

  • Konfigurations-Cache: Diese Warnung wird angezeigt, wenn das Konfigurations-Caching für Ihr Projekt nicht aktiviert ist. Build Analyzer durchläuft eine Reihe von Builds, um zu prüfen, ob Ihr Projekt mit dem Konfigurations-Caching kompatibel ist. Wenn die Kompatibilitätsprüfungen erfolgreich waren, können Sie das Konfigurations-Caching über den Build Analyzer aktivieren.

  • Jetifier prüfen:Diese Warnung wird angezeigt, wenn das Flag enableJetifier vorhanden ist und in Ihrem Projekt aktiviert ist, d. h. wenn android.enableJetifier=true in Ihrer Datei gradle.properties enthalten ist. Build Analyzer kann prüfen, ob das Flag sicher entfernt werden kann, um die Build-Leistung Ihres Projekts zu verbessern und eine Migration weg von den nicht gewarteten Android-Supportbibliotheken durchzuführen.

Auswirkungen des Downloads prüfen

Build Analyzer bietet eine Übersicht über die Zeit, die für das Herunterladen von Abhängigkeiten aufgewendet wurde, und eine detaillierte Ansicht der Downloads pro Repository. Wähle im Drop-down-Menü Downloads aus, um die Auswirkungen von Downloads zu prüfen. Diese Informationen sind auch im Fenster Synchronisieren verfügbar.

Anhand dieser Informationen können Sie feststellen, ob sich unerwartete Downloads von Abhängigkeiten negativ auf die Build-Leistung auswirken. Dies ist besonders wichtig bei inkrementellen Builds, bei denen Artefakte nicht konsistent heruntergeladen werden sollten.

Insbesondere können Sie anhand dieser Informationen Konfigurationsprobleme identifizieren, z. B. die Verwendung dynamischer Versionen von Abhängigkeiten, die zu unerwarteten Downloads führen. Eine hohe Anzahl fehlgeschlagener Anfragen für ein bestimmtes Repository weist außerdem darauf hin, dass das Repository in der Repository-Konfiguration entfernt oder nach unten verschoben werden sollte.

Abbildung 5: Das Build-Analysetool zeigt die Auswirkungen von Downloads auf die Build-Dauer.

[Nur Windows] Auswirkungen der Antivirensoftware prüfen

Build Analyzer informiert Sie, wenn Antivirensoftware die Build-Leistung beeinträchtigen könnte. Dies kann passieren, wenn Antivirensoftware wie Windows Defender die von Gradle verwendeten Verzeichnisse in Echtzeit scannt. Build Analyzer empfiehlt eine Liste von Verzeichnissen, die vom aktiven Scan ausgeschlossen werden sollen, und bietet nach Möglichkeit einen Link, über den Sie die Verzeichnisse zur Ausschlussliste des Windows Defender-Ordners hinzufügen können.