Search for:

JankStats wird Alpha. Bibliothek für echte Mülljagd… | von Chet Haase | Android-Entwickler Februar 2022

Illustration von Virginia Poltrack

Eine Bibliothek, die Janko in der realen Welt verfolgt

Das Debuggen der Leistung ist … schwierig. Es ist oft nicht klar, wo man anfangen soll, welche Tools zu verwenden sind, welche Probleme Benutzer haben oder wie sich diese Probleme auf realen Geräten manifestieren.

Das Android-Team hat in den letzten Jahren mehr Debugging-Tools für verschiedene Teile des Problems bereitgestellt, angefangen bei der Analyse Startleistung beim Testen bestimmte Codepfade insbesondere auf das Testen und Optimieren Anwendungsfälle zu visuelle Profiler in der IDE. All dies dient zum Testen der Entwicklungszeit, um Ihnen bei der Fehlerbehebung und Behebung von Problemen zu helfen, die Sie lokal sehen.

Inzwischen sind beide Google Play Android-Vitals ich Firebase Bieten Sie Dashboards an, in denen Entwickler sehen können, wie ihre Apps auf Benutzergeräten im Feld funktionieren.

Es ist jedoch schwierig zu wissen, wie Sie Probleme finden können, die Ihre Anwendung in realen Situationen haben kann, insbesondere Probleme, die auf Benutzergeräten auftreten, und nicht nur Situationen, die Sie auf dieser praktischen Entwicklungsmaschine sehen, die Sie bequem von Ihrem Stuhl aus verwenden. Leistungssteuerungsfelder sind hilfreich, bieten jedoch nicht unbedingt die Detailgenauigkeit, die Sie benötigen, um zu wissen, was passiert ist, wenn Ihre Benutzer Probleme hatten.

Eingeben JankStats: Die erste AndroidX-Bibliothek, die speziell für die Instrumentierung und Meldung von Leistungsproblemen Ihrer App auf Benutzergeräten entwickelt wurde.

JankStats ist eine relativ kleine API mit im Wesentlichen drei Zielen: Erfassen von Leistungsinformationen pro Frame, Ausführen Ihrer Anwendung auf Benutzergeräten (nicht nur Entwicklungsgeräten) und Aktivieren von Instrumentierung und Berichten darüber, was in Ihrer Anwendung passiert, wenn es Leistungsprobleme gibt.

Die Android-Plattform bietet bereits Möglichkeiten, Frame-Performance-Daten abzurufen. Beispielsweise können Sie FrameMetrics ab API 24 verwenden, und wir haben es in neueren Versionen hinzugefügt, um noch mehr Informationen bereitzustellen. Wenn Sie frühere Versionen verwenden, gibt es verschiedene Ansätze, um weniger genaue, aber dennoch nützliche Wetterinformationen zu erhalten.

Wenn Sie also möchten, dass Ihre eigene Frame-Dauer-Logik in allen Editionen funktioniert, müssen Sie diese verschiedenen Mechanismen in allen Versionen der API implementieren. Oder Sie können die einzigartige JankStats-API verwenden, die für Sie funktioniert … zusätzlich zu den zusätzlichen Funktionen oben (lesen Sie weiter!).

JankStats vereinfacht dies, indem es eine einzelne Bildraten-Berichts-API bereitstellt und geeignete Mechanismen intern delegiert (FrameMetrics auf API 24+ usw.). Sie müssen sich keine Gedanken darüber machen, woher diese Informationen stammen, Sie können JankStats einfach fragen, wie lange es gedauert hat, und Sie erhalten Rückrufe mit diesen Informationen.

Das Erstellen und Anhören von JankStats-Daten ist im Grunde so einfach: Sie erstellen sie, und dann lehnen Sie sich zurück (okay, Ihr Code entspannt sich) und hören zu. Hier sind Beispiele für diese Schritte aus dem JankStats-Beispiel, JankLoggingActivity:

val jankFrameListener = JankStats.OnFrameListener { frameData ->
// real app would do something more interesting than log this...
Log.v("JankStatsSample", frameData.toString())
}
jankStats = JankStats.createAndTrack(
window,
Dispatchers.Default.asExecutor(),
jankFrameListener,
)

Im Gegensatz zu neueren Benchmarking-Bibliotheken wurde JankStats erstellt, um Ergebnisse von Benutzergeräten bereitzustellen. Es ist großartig, Fehler auf Ihrem Entwicklungscomputer zu beheben, aber es hilft nicht in Situationen, in denen Ihre Anwendung von echten Menschen in der realen Welt auf sehr unterschiedlichen Geräten und unter sehr unterschiedlichen Einschränkungen verwendet wird.

JankStats bietet eine API zum Instrumentieren Ihrer Anwendung, um die benötigten Leistungsdaten bereitzustellen, und einen Berichtsmechanismus, damit Sie diese Daten hochladen und offline analysieren können.

Schließlich (hören Sie: Das ist eine wirklich neue Sache mit dieser Bibliothek) bietet JankStats eine Möglichkeit zu verstehen, was wirklich in Ihrer App vor sich ging, als Leistungsprobleme auftraten. Die Beschwerde, die wir oft gehört haben, ist, dass vorhandene Tools, Dashboards und Ansätze Ihnen nicht genug geben Kontext für Leistungsprobleme, die Ihre Benutzer möglicherweise sehen.

Beispielsweise kann Ihnen die FrameMetrics-API (eingeführt in API 24 und intern in JankStats verwendet) mitteilen, wie lange es dauert, Frames zu zeichnen, aus denen Sie Informationen über den Ruck extrahieren können. Aber es kann Ihnen nicht sagen, was damals in Ihrer Bewerbung vor sich ging. Dieses Problem müssen Sie verstehen, wenn Sie versuchen, Ihren Code zu instrumentieren und in FrameMetrics oder andere Tools zur Leistungsmessung zu integrieren. Aber jeder hat genug zu tun, ohne dass diese Art von Infrastruktur intern aufgebaut werden muss, sodass der Ruck in der Regel ungemessen bleibt und die Performance-Probleme weiterhin bestehen.

In ähnlicher Weise kann Ihnen das Android Vitals-Dashboard mitteilen, dass Ihre App Leistungsprobleme hat, aber es kann Ihnen nicht sagen, was Ihre App tat, als diese Probleme auftraten. Es ist also schwer zu wissen, was man mit diesen Informationen anfangen soll.

JankStats präsentiert PerformanceMetricsState API, ein einfacher Satz von Methoden, mit denen Sie dem System jederzeit paarweise mitteilen können, was in Ihrer Anwendung passiert StringS. Beispielsweise möchten Sie möglicherweise aufzeichnen, wenn dies angegeben ist Activity oder Fragment aktiv sind, oder wenn a RecyclerView blättert.

Hier ist beispielsweise der Code aus dem JankStats-Beispiel, der zeigt, wie RecyclerView angewiesen wird, JankStats diese Informationen bereitzustellen:

val scrollListener = object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView,
newState: Int)
{
val metricsState = metricsStateHolder?.state ?: return
when (newState) {
RecyclerView.SCROLL_STATE_DRAGGING -> {
metricsState.addState("RecyclerView", "Dragging")
}
RecyclerView.SCROLL_STATE_SETTLING -> {
metricsState.addState("RecyclerView", "Settling")
}
else -> {
metricsState.removeState("RecyclerView")
}
}
}
}

Dieser Status kann von überall in Ihre Anwendung eingefügt werden (oder sogar aus einer anderen Bibliothek), und JankStats nimmt ihn auf, wenn Ergebnisse gemeldet werden. Auf diese Weise erfahren Sie, wenn Sie Berichte von JankStats erhalten, nicht nur, wie lange die Dinge in jedem Frame gedauert haben, sondern auch, was der Benutzer während dieses Frames getan hat, was ein beitragender Faktor sein könnte.

Hier sind einige Ressourcen, um mehr über JankStats zu erfahren:

AndroidX-Projekt: JankStats ist dabei androidx.metrics-Bibliothek in AndroidX.

Dokumente: Unsere Website für Entwickler hat eine neue Entwicklerleitfaden die beschreibt, wie man JankStats benutzt.

Codebeispiel: Dies Projekt enthält Beispiele, die zeigen, wie JankStats-Objekte instanziiert und überwacht werden, zusammen mit der Instrumentierung Ihrer Anwendung mit wichtigen UI-Statusinformationen:

Fehler, Fehler, Fehler: Wenn Sie irgendwelche Probleme mit der Bibliothek haben oder API-Anforderungen haben, bitte einen Fehler melden.

JankStats hat gerade seine erste Alpha-Version veröffentlicht, was bedeutet: „Wir denken, dass dies eine API und Funktionalität ist, die für 1.0 sinnvoll sind, aber bitte versuchen Sie es und lassen Sie es uns wissen.“

Es gibt andere Dinge, die wir in Zukunft gerne mit JankStats machen würden, darunter das Hinzufügen einer Art Aggregationsmechanismus oder sogar die Synchronisierung mit bestehenden Upload-Diensten. Aber wir wollten diese erste Version mit grundlegenden Installationen veröffentlichen, um zu sehen, wie Sie sie verwenden und was Sie sonst noch sehen möchten. Wir hoffen, dass es in seinem jetzigen Grundzustand nützlich sein wird; allein die Möglichkeit, Statusinformationen der Benutzeroberfläche einfach zu instrumentieren und dann aufzuzeichnen, sollte besser sein, als … diese Fähigkeit nicht zu haben.

So herunterladen das, damit spielen, und lassen Sie uns wissen, wenn Sie irgendwelche Probleme haben. Und am wichtigsten; Finden und beheben Sie diese Leistungsprobleme! Ihre Kunden warten auf Sie – lassen Sie sie nicht zu lange warten!

Wird es in Metaverse Werbung geben?

Die Definition der Metaverse ist mühsam. Dies ist zumindest teilweise richtig, weil die Unternehmen, die am meisten darin investieren, ermutigt werden, das weiche, schwammige erkenntnistheoretische Kraftfeld zu bewahren, das das Konzept umgibt. Als vage Idee kann man sich glaubwürdig als die nächste Mensch-Maschine-Computing-Plattform rühmen; Mit einem schärferen Fokus und insbesondere wenn es als spezifische Produktimplementierung präsentiert wird, mag es weniger grandios erscheinen. Diese Einschätzung sollte nicht zynisch oder abwertend sein. Das Metaversum als Idee ist spannend und für viele außergewöhnlich schlaue Menschen versuchen konstruiere es. Konzeptionell ist das Metaverse ziemlich scharf, aber wenn mir jemand sagte, „in 10 Jahren wird sich jeder mit dem Metaverse beschäftigen“, könnte ich mir kaum vorstellen, wie es aussah.

Während also der Inhalt von „What Metaverse“ unklar ist, hat sich „Why“ im vergangenen Jahr dramatisch verschärft, da einige der weltweit größten Unternehmen verschiedene Initiativen ernsthaft in die Geschichte eingearbeitet haben. Mark Zuckerberg artikuliert sehr schlüssig die potenzielle Macht und den Wert des Metaversums sowie die Motive seiner Firma Meta für seinen Bau. Interview mit Ben Thompson von Stratechery:

Also, ein paar Gedanken. Zum einen finde ich den Ausdruck „reale Welt“ interessant. Ich denke, es gibt eine physische Welt und eine digitale Welt, und immer mehr überschneiden und verschmelzen sie irgendwie, aber ich würde argumentieren, dass die reale Welt immer mehr eine Kombination aus digitaler und physischer Welt ist und dass die reale Welt nicht gerecht ist physikalische Welt. Ich denke, es ist ein interessanter Rahmen, um in Zukunft über diese Dinge nachzudenken.

Wie viel ist es wert, ich konzeptualisiere das Metaverse als: ein kollektiver, persistenter Satz von Inhalten, auf den über eine Vielzahl von Hardware-Designfaktoren zugegriffen werden kann und der für eine Reihe von Anwendungsfällen und Kontexten ausgelegt ist.

Entpacken dieser Charakterisierung in Teile:

  • Gemeinsam, ein fester Satz von Inhalten. Inhalte stehen einer Gruppe von Benutzern zur Verfügung und existieren, entwickeln und erweitern sich ständig und global für alle Benutzer durch jede Interaktion, die sie ermöglichen. Der Zustand des Inhalts ist für alle Benutzer konsistent, unabhängig davon, ob sie damit interagieren oder nicht;
  • Verfügbar über eine Vielzahl von Hardware-Formfaktoren. Der Inhalt ist nicht exklusiv für ein beliebiges Stück Hardware und kann für die Verwendung auf einer Vielzahl von Geräten angepasst werden. So stelle ich mir das vor: Eine Gruppe von Mitarbeitern trifft sich in einer Sitzung an einem Whiteboard. Ein Teil der Gruppe nutzt VR-Geräte und nimmt alles andere im virtuellen Raum räumlich wahr; Ein anderer Teil der Gruppe nutzt Tablets und kann nur mit dem Vorstand kommunizieren. Trotz der Tatsache, dass Benutzer über verschiedene Arten von Geräten mit dem Board kommunizieren, wird das Board für alle Teilnehmer synchronisiert;
  • Entwickelt, um sich an eine Vielzahl von Anwendungen und Kontexten anzupassen. Die Metaverse-Instanz ist das ganze Leben des Benutzers umfassend und kann zu jeder Tageszeit und für jeden Zweck interagieren. Metaverse ist nicht ausschließlich sozial (Spiele) oder geschäftsbezogen (Beispiel eines Whiteboards von oben); Es wurde entwickelt, um alle Umgebungen zu verbessern, denen eine Person in der Konvergenz ihrer physischen und digitalen Welt begegnen kann.

Ein Hindernis, das meines Erachtens Analysten, Kommentatoren und Technologen gleichermaßen nicht beseitigen können, ist die Konzeptualisierung des Metaversums als völlig neuer Rahmen für menschliche Interaktion im Gegensatz zu einer bestimmten Form von Technologie. Daher wird Metaverse oft mit VR oder den sehr spezifischen (und dystopischen) Implementierungen in Verbindung gebracht Schneefall ich Bereit für den ersten Spieler. Meiner Meinung nach repräsentiert das Metaverse mit Erfolg eine neue Art, menschliches Verhalten zu organisieren. Er würde sich nicht beschreiben Demokratie oder Religion durch die verschiedenen Technologien, die bei der Arbeit damit verwendet werden; das gleiche sollte für die Metaverse gelten.

Was die interessante Frage aufwirft: Wie wird Metaverse kommerzialisiert und monetarisiert? Und welche Rolle spielt Werbung dabei? Digitale Werbung ist der wirtschaftliche Motor des Internets, aber wie ich in einem kürzlich erschienenen Beitrag darüber sagte Wachstumsmodelle für Web3-Spiele (und Diskussionen zwischen web3 und Metaverse neigen dazu, sich zu überschneiden), es gibt jedoch eine Tendenz zu neuen Technologien und Formen von Mensch-Maschine-Computerschnittstellen besonders Gehen Sie bei web3 davon aus, dass technologische Innovation eine wirtschaftliche Revolution erfordert. Diese Mentalität setzt voraus, dass alte Geschäftsmodelle über Bord geworfen wurden, während sich die Menschheit in Richtung einer Technotopie bewegt, in der das vulgäre Streben nach Gewinn anachronistisch geworden ist.

Und im Allgemeinen wird kein Ansatz zum Geldverdienen von Technologen als vulgärer angesehen als Werbung. Während ich schreibe Das Metaverse ist noch nicht da. Bis dahin wird digitale Werbung über das Internet finanziert:

Das Manifest des Schicksals war ein politischer Slogan des 19. Jahrhunderts, der die Annexion westlicher Gebiete motivierte und durch den Bau des US-Interkontinental-Eisenbahnnetzes erleichtert wurde, das größtenteils von der US-Regierung finanziert wurde. Wenn das digitale Äquivalent des manifesten Schicksals die Verlagerung des Engagements in das Metaversum ist, dann wird diese Migration durch die digitalen Werbejobs von Unternehmen finanziert, die virtuelle Eisenbahnen bauen, die dieses neue Medium liefern. Der Ehrgeiz, eine neue Verknüpfung der Verbraucherbindung aufzubauen, die nicht von den Einschränkungen und gestörten Anreizen des werbefinanzierten Internets behindert wird, wächst und edel. Aber die Suche nach diesem Ideal wird durch digitale Werbung finanziert.

Aber wird das Geschäftsmodell der Werbung komplett verworfen, wie das Metaverse geformt wird? Sicherlich nicht. Werbung ist ein Geschäft mit einer fantastisch hohen Marge, und nicht zuletzt erweitern sich die Möglichkeiten für ihre Implementierung in Metaverse erheblich. Aber neben den wirtschaftlichen Möglichkeiten bietet Werbung den Erstellern von Inhalten auch wichtige Mittel, um ihre Arbeit zu entdecken und sich an ihr zu beteiligen. Dieses Bedürfnis wird niemals verschwinden – und ist im Metaversum nicht jeder ein Schöpfer?

Nike ich Adidas sind kürzlich durch Akquisitionen (Nike hat RTFKT, ein virtuelles Schuhunternehmen, das NFT schmiedet, übernommen) und Partnerschaften (Adidas ist eine Partnerschaft mit dem Bored Ape Yacht Club eingegangen und hat seine NFT-Kollektion veröffentlicht, In der Metaverse), in die Fußstapfen treten andere Luxusmarken wie Balenciaga und verschiedene LVMH-Labels wie Louis Vuitton. Gucci veröffentlichte kürzlich eine Sammlung von 851 virtuellen Taschen in der digitalen Welt von Roblox, mit Einer von ihnen verkauft sich für mehr als sein Äquivalent in der realen Welt. Zusammenarbeit mit Marken schon existieren in Metaverse in Form von Werbung, die die Resonanz und das Prestige der Marke nutzt, um mit virtuellen Gütern Geld zu verdienen.

Aber diese Art von Branding-Übungen sind schwer zu messen und sie sind wirklich Ausdruck von echtem Wert. Welche Infrastruktur unterstützt native Metaverse-Markenwerbung für die Öffentlichkeit innerhalb von Metaverse? Wie erzielen exklusive Metaverse-Produkte eine anfängliche Traktion? Und auf welche Weise kann die Heimimplementierung von Metaverse-Werbung dieses Geschäftsmodell tatsächlich verbessern? Das sind grundlegendere Fragen.

Autor des Fotos Joshua Earle er Unsplash