Traces sind oft die beste Informationsquelle bei der ersten Untersuchung eines
die Leistung beeinträchtigen. Sie ermöglichen es Ihnen, eine Hypothese
vom Problem aufzustellen und
wo Sie anfangen sollen.
Unter Android werden zwei Tracingebenen unterstützt: System-Tracing und Methode
Tracing von Daten.
Da bei der Systemverfolgung nur die speziell für die Nachverfolgung gekennzeichneten Bereiche nachverfolgt werden, gibt es
und die Leistung Ihrer App werden nicht stark beeinträchtigt. System
Tracing ist ideal, um zu sehen, wie lange bestimmte Abschnitte Ihres Codes
ausgeführt werden soll.
Mit dem Methoden-Tracing wird jeder Funktionsaufruf in Ihrer App nachverfolgt. Das ist sehr teuer.
Dies wirkt sich stark auf die Leistung Ihrer App aus,
was passiert, welche Funktionen aufgerufen werden und wie oft
dass sie angerufen werden.
Standardmäßig enthalten System-Traces keine einzelnen zusammensetzbaren Funktionen.
Sie sind in Methoden-Traces verfügbar.
Wir testen derzeit eine neue Funktion zur Systemverfolgung, um zusammensetzbare Funktionen anzuzeigen.
Funktionen innerhalb von System-Traces. Das System ist so wenig aufdringlich,
Tracing mit Methoden-Tracing-Detailebenen in der Zusammensetzung.
Für Zusammensetzungs-Tracing einrichten
Um das Neuzusammensetzungs-Tracing in Ihrem Projekt auszuprobieren, müssen Sie auf unter
mindestens die folgenden Versionen:
Android Studio Flamingo
Benutzeroberfläche zum Schreiben: 1.3.0
Compose-Compiler: 1.3.0
Das Gerät oder der Emulator, auf dem Sie den Trace ausführen, muss ebenfalls mindestens API-Level haben
30.
Außerdem müssen Sie eine neue Abhängigkeit für Compose Runtime Tracing hinzufügen:
Verwende die App, um eine Neuzusammensetzung vorzunehmen und die Aufnahme zu beenden. Sobald der Trace
verarbeitet wurde und erscheint, sollten Sie die zusammensetzbaren Funktionen
den Neuzusammensetzungs-Trace. Du kannst mit Tastatur und Maus zoomen und schwenken
um den Trace herum; Wenn Sie mit dem Navigieren in einem Trace nicht vertraut sind, sehen Sie in der
Dokumentation zu Traces aufzeichnen
Wir wollten den Aufwand
der Funktion so gering wie möglich halten,
Es gibt eine APK-Größenerhöhung für „Compose“-Apps aus Tracing-Strings
vom Compose-Compiler in das APK eingebettet. Diese Größenerhöhung kann
Relativ klein, wenn Ihre App nicht viel „Schreiben“ verwendet, oder größer für das vollständige Schreiben von „Schreiben“
Apps. Diese Tracing-Strings sind außerdem nicht verschleiert, sodass sie in
wie zuvor gezeigt. Der Compose-Compiler fügt sie in alle
ab Version 1.3.0.
Sie können die Tracing-Strings in Ihrem Produktions-Build entfernen, indem Sie den Parameter
folgende Proguard-Regel:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt {
boolean isTraceInProgress();
void traceEventStart(int,int,int,java.lang.String);
void traceEventStart(int,java.lang.String);
void traceEventEnd();
}
Diese Funktionen können sich in Zukunft ändern. Sämtliche Änderungen sind jedoch unter
in den Versionshinweisen zu „Compose“.
Hinweis: Wenn du sie nicht einbehältst und gleichzeitig Kosten für die APK-Größe anfallen, wird sichergestellt, dass
Das APK, für das ein Profil erstellt wird, ist dasselbe, das die App-Nutzer ausführen.
Genaues Timing
Für eine genaue Profilerstellung müssen Sie wie bei allen Leistungstests
App profileable und non-debuggable gemäß Profilierbarer Anwendungen.
Trace vom Terminal erfassen
Es ist möglich, einen Kompositions-Trace vom Terminal zu erfassen. Dazu müssen Sie
um die Schritte auszuführen, die Android Studio normalerweise automatisch für Sie ausführt.
Abhängigkeiten hinzufügen
Fügen Sie zuerst die zusätzlichen Abhängigkeiten zu Ihrer Anwendung hinzu.
Starten Sie die App und bereiten Sie den Abschnitt vor, den Sie nachverfolgen möchten.
Aktivieren Sie das Tracing in der App, indem Sie einen Broadcast ausgeben.
# set app package variable, e.g. com.google.samples.apps.nowinandroid.debug# can be found through `adb shell ps -ef` or `adb shell cmd package list packages`package=<yourappprocess>
# issue a broadcast to enable tracing
adbshellambroadcast\
-aandroidx.tracing.perfetto.action.ENABLE_TRACING\$package/androidx.tracing.perfetto.TracingReceiver
Starten Sie den Aufzeichnungsbefehl, den Sie zuvor erstellt haben.
Trace öffnen
adb pull <location> ist der Trace vom Gerät (Standort, der in den
record-Befehls).
Sie können die Leistung mit Jetpack MacroBenchmark messen,
der Traces als Ergebnisse bereitstellt. Um das Tracing von Zusammensetzungen zu aktivieren,
Makro-Benchmarks:
Fügen Sie dem MacroBenchmark-Testmodul diese zusätzlichen Abhängigkeiten hinzu:
Instrumentierungsargument androidx.benchmark.fullTracing.enable=true hinzufügen
bevor Sie Benchmarks durchführen. Überprüfen Sie die Makro-Benchmark-Instrumentierung
Argumente für weitere Informationen zu MacroBenchmark
Instrumentierungsargumente.
Feedback
Wir freuen uns auf Ihr Feedback zu dieser Funktion, zu Fehlern, die Sie finden,
und alle Ihre Wünsche. Sie können uns über das Problem
Tracker.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.