Android Studio Dolphin | 2021.3.1 (September 2022)

Die folgenden Funktionen sind in Android Studio Dolphin neu.

Neu in Compose

Im Folgenden finden Sie neue Funktionen und Verbesserungen von Jetpack Compose in Android Studio.

Animationskoordination erstellen

Wenn Ihre Animationen in einer zusammensetzbaren Vorschau beschrieben werden, können Sie jetzt mit der Animationsvorschau alle auf einmal prüfen und koordinieren. Sie können auch eine bestimmte Animation einfrieren.

GIF zeigt Prüfung mit der Benutzeroberfläche „Alle Animationen“

Annotationen für mehrere Vorschauen erstellen

Sie können jetzt eine Annotationsklasse definieren, die mehrere Vorschaudefinitionen enthält, und diese neuen Annotationen verwenden, um diese Vorschauen gleichzeitig zu generieren. Mit dieser neuen Anmerkung können Sie eine Vorschau mehrerer Geräte, Schriftarten und Designs gleichzeitig anzeigen lassen, ohne diese Definitionen für jede einzelne zusammensetzbare Funktion zu wiederholen.

UI für Anmerkungen mit mehreren Vorschauen

Anzahl der Neuzusammensetzungen im Layout Inspector erstellen

Wenn Sie Fehler in Ihren Composer-Layouts beheben möchten, ist es wichtig zu wissen, wann zusammensetzbare Funktionen neu erstellt werden oder nicht. So wissen Sie, ob die UI richtig implementiert wurde. Wenn sie beispielsweise zu oft neu zusammengesetzt wird, erledigt Ihre Anwendung möglicherweise mehr Arbeit als nötig. Komponenten, die sich nicht so neu zusammensetzen, wie es erwartet wird, können zu unerwartetem Verhalten führen.

Mit dem Layout Inspector können Sie jetzt sehen, wenn diskrete zusammensetzbare Funktionen in Ihrer Layouthierarchie neu zusammengesetzt oder übersprungen wurden. Diese Informationen werden live angezeigt, während Sie mit Ihrer App interagieren. Achten Sie darauf, dass Ihre Anwendung die Compose-1.2.0-alpha03 oder höher verwendet. Stellen Sie dann die Anwendung wie gewohnt bereit.

Neuer Zähler für Komposition und Überspringen im Layout Inspector

Öffnen Sie das Fenster Layout Inspector und stellen Sie eine Verbindung zum Anwendungsprozess her. In der Komponentenstruktur sollten neben der Layouthierarchie zwei neue Spalten angezeigt werden. Die erste Spalte zeigt die Anzahl der Zusammensetzungen für jeden Knoten. In den zweiten Spalten wird die Anzahl der Überspringungen für jeden Knoten angezeigt. Ähnliche Informationen finden Sie auch im Bereich Attribute, wenn Sie eine zusammensetzbare Funktion aus der Komponentenstruktur oder der Layoutanzeige auswählen.

Wenn Sie die Anzahl zurücksetzen möchten, klicken Sie oben im Feld Komponentenbaum auf Zurücksetzen. Durch das Zurücksetzen der Anzahl lassen sich Neuzusammensetzungen oder Überspringen während einer bestimmten Interaktion mit Ihrer App besser nachvollziehen.

Symbol für die Ansichtsoptionen für Live Layout Inspector

Zähler für Komposition und Überspringen im Layout Inspector aktivieren

Der Kopplungsassistent des Wear OS-Emulators wurde aktualisiert

Ab Android Studio Dolphin Canary 3 bietet der Kopplungsassistent für Wear OS-Emulatoren verbesserte Funktionen, mit denen sich Wear-Emulatoren einfacher verwalten und verbinden lassen. Sie haben jetzt folgende Möglichkeiten:

  • Rufen Sie Ihre Wear-Geräte im Geräte-Manager auf.
  • Du kannst mehrere Wear-Geräte mit einem einzelnen virtuellen oder physischen Smartphone koppeln.
  • Zuvor gekoppelte Geräte werden beim Start automatisch wieder verbunden. Android Studio merkt sich jetzt das letzte eingerichtete Paar und koppelt es erneut.

Damit Sie diese neuen Funktionen nutzen können, müssen die Emulatoren Ihres Smartphones das API-Level 30 oder höher haben und der Google Play Store muss installiert sein. Achte außerdem darauf, dass deine Wear-Emulatoren API-Level 28 oder höher haben. Wählen Sie Tools > SDK-Manager aus, um für Ihre emulierten Geräte ein Upgrade auf die neuesten System-Images durchzuführen.

Weitere Informationen finden Sie unter Kopplungsassistent für Wear OS-Emulatoren verwenden.

Aktualisierte Symbolleiste des Wear OS-Emulators

Ab Android Studio Dolphin Canary 2 enthält die Emulator-Symbolleiste für Wear-Emulatoren mit API-Level 28 oder höher Schaltflächen, mit denen physische Schaltflächen und gängige Aktionen auf dem Gerät simuliert werden können. Die neuen Schaltflächen sind: Button 1 und Button 2 (Schaltfläche 2 ist nur auf API-Level 30 oder höher verfügbar), die Palm-Schaltfläche und die Neige-Schaltfläche. Hier sind einige der Aktionen, die du mit den neuen Schaltflächen in deinem Wear-Emulator ausführen kannst:

  • Um in den Inaktivmodus zu wechseln, klicke auf die Schaltfläche mit der Handfläche.
  • Mit der Schaltfläche „Neigen“ kehrst du wieder zum letzten Bildschirm vor dem Inaktivmodus zurück.

Weitere Informationen finden Sie unter Häufige Aktionen im Emulator ausführen.

Wear-Emulator mit Wear-spezifischen Schaltflächen

Neue Wear OS-Ausführungskonfigurationen

Es wurden neue Ausführungskonfigurationen hinzugefügt, um Wear OS-spezifische Oberflächen wie Zifferblätter, Ansichten und Zusatzfunktionen schnell auszuführen und zu debuggen. Sie können diese neuen Konfigurationen beim Ausführen Ihrer Anwendung über das Dialogfeld Run/Debug Configurations erstellen.

Weitere Informationen finden Sie unter Ausführungs-/Fehlerbehebungskonfigurationen für Wear OS.

Konfigurationen der neuen Wear OS-Einführung

Neuer Logcat

Logcat wurde aktualisiert, um das Parsen, Abfragen und Verfolgen von Logs zu vereinfachen.

Neuer Formatierer

Logcat formatiert Logs jetzt, um das Scannen nützlicher Informationen wie Tags und Nachrichten und die Identifizierung verschiedener Arten von Logs wie Warnungen und Fehlern zu erleichtern.

Neue Formatierung für Protokolle in Logcat

Mehrere Logcat-Fenster erstellen

Sie können jetzt mehrere Tabs in Logcat erstellen und so ganz einfach zwischen verschiedenen Geräten oder Abfragen wechseln. Durch Rechtsklick auf einen Tab können Sie ihn umbenennen, durch Klicken und Ziehen neu anordnen.

Für einen einfacheren Vergleich zwischen zwei Sätzen von Logs können Sie jetzt die Ansicht innerhalb eines Tabs aufteilen. Klicken Sie dazu mit der rechten Maustaste in die Logansicht und wählen Sie entweder Rechts teilen oder Abteilen aus. Klicken Sie mit der rechten Maustaste und wählen Sie Schließen aus, um eine Aufteilung zu schließen. Für jede Aufteilung können Sie eine eigene Geräteverbindung, Ansichtsoptionen und Abfragen festlegen.

Mehrere Logcat-Fenster mithilfe von Splits erstellen

Zwischen Voreinstellungen wechseln

Mit Logcat können Sie jetzt schnell zwischen den verschiedenen Ansichtsmodi Standard, Kompakt und Benutzerdefiniert wechseln, indem Sie auf Auswahl des Ansichtsmodus klicken. Jeder Ansichtsmodus bietet eine andere Standardeinstellung, mit der mehr oder weniger Informationen wie Zeitstempel, Tags und Prozess-IDs (PID) angezeigt werden. Sie können auch die einzelnen Standardansichtsmodi sowie einen benutzerdefinierten Ansichtsmodus anpassen, indem Sie Ansicht ändern auswählen.

Screenshot zum Wechseln zwischen verschiedenen Ansichtsmodi

In der vorherigen Version von Logcat konnten Sie entweder die Stringsuche (mit Unterstützung für reguläre Ausdrücke) verwenden oder einen neuen Filter erstellen, indem Sie über die Logcat-Benutzeroberfläche verschiedene Felder ausfüllen. Die erste Option erschwerte die Suche und die zweite erschwerte das Teilen und Einrichten von Abfragen. Zur Vereinfachung der Suche können Sie nun Schlüssel/Wert-Paare direkt über das Hauptabfragefeld suchen.

Screenshot der neuen Abfragesyntax mit automatischer Vervollständigung

Dieses neue Abfragesystem bietet die Genauigkeit Ihrer Abfragen, ohne reguläre Ausdrücke zu verwenden, und bietet die Möglichkeit, frühere Abfragen aus dem Verlauf abzurufen und diese mit anderen zu teilen. Sie haben auch weiterhin die Möglichkeit, Regex zu verwenden und Logs auf der Grundlage von Schlüssel/Wert-Paaren auszuschließen. Hier sind einige Beispiele für die Verwendung des neuen Abfragesystems. Sie können aber auch einfach mit der Eingabe in das Abfragefeld beginnen, um Vorschläge zu erhalten:

  • PIDs für das lokale App-Projekt: package:mine
  • Spezifische Werte:
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • Schließen Sie einen bestimmten Wert aus, indem Sie dem Schlüssel - voranstellen:
    • -tag:<exclude-tag>
  • Verwenden Sie reguläre Ausdrücke mit einem bestimmten Schlüssel, indem Sie ~ nach dem Schlüssel einfügen:
    • tag~:<regular-expression-tag>
    • Mit dem auszuschließenden Tag kombinieren: -tag~:<exclude-regular-expression-tag>

Sie können auch einen Verlauf der Abfragen aufrufen. Klicken Sie dazu im Abfragefeld auf Auswahl für den Abfrageverlauf und wählen Sie die gewünschten Abfragen aus dem Drop-down-Menü aus. Wenn Sie eine Abfrage zu den Favoriten hinzufügen möchten, damit sie in allen Studioprojekten oben in der Liste angezeigt wird, klicken Sie auf das Favoritenanfrage am Ende des Abfragefelds.

Screenshot des Abfrageverlaufs mit Favoriten

Logs zu App-Abstürzen/-Neustarts verfolgen

Mit dem neuen Logcat ist es jetzt einfacher, Logs Ihrer Anwendung bei App-Abstürzen und -Neustarts zu verfolgen, sodass Sie keine wichtigen Logs zu diesen Ereignissen verpassen. Wenn ein Logcat feststellt, dass Ihr Anwendungsprozess angehalten und neu gestartet wurde, wird in der Ausgabe eine Meldung wie PROCESS ENDED und PROCESS STARTED angezeigt (siehe unten):

Screenshot von Prozessneustarts in Logcat

Beim Neustart von Logcat bleibt Ihre Sitzungskonfiguration wie Aufteilung von Tabs, Filter und Ansichtsoptionen erhalten, sodass Sie Ihre Sitzung einfach fortsetzen können.

Von Gradle verwaltete Geräte

Wir führen Gradle Managed Devices ein, um die Konsistenz, Leistung und Zuverlässigkeit bei der Verwendung virtueller Android-Geräte für automatisierte instrumentierte Tests zu verbessern. Mit dieser Funktion, die ab API-Level 27 verfügbar ist, kannst du in den Gradle-Dateien deines Projekts virtuelle Testgeräte konfigurieren. Das Build-System verwendet die Konfigurationen, um diese Geräte beim Ausführen Ihrer automatisierten Tests vollständig zu verwalten, d. h. zu erstellen, bereitzustellen und zu entfernen.

Diese Funktion verschafft Gradle Einblick in nicht nur die von Ihnen ausgeführten Tests, sondern auch über den Lebenszyklus der Geräte. Dadurch wird die Qualität Ihrer Tests auf folgende Weise verbessert:

  • Behandelt gerätebezogene Probleme, um sicherzustellen, dass Ihre Tests ausgeführt werden
  • Verwendet Emulator-Snapshots, um die Gerätestartzeit und die Arbeitsspeichernutzung zu verbessern und die Geräte zwischen den Tests in einem bereinigten Zustand wiederherzustellen
  • Speichert Testergebnisse im Cache und führt nur Tests noch einmal aus, die wahrscheinlich unterschiedliche Ergebnisse liefern
  • Bietet eine einheitliche Umgebung für die Durchführung von Tests zwischen lokalen und Remote-Testläufen

Darüber hinaus wird mit Gradle Managed Devices eine neue Art von Emulator-Gerät eingeführt: Automated Test Devices (ATD). Diese sind für die Verbesserung der Leistung bei der Ausführung von Instrumentierungstests optimiert. In Kombination mit der Unterstützung von Testfragmentierung können Sie damit experimentieren, Ihre Testsuite auf mehrere ATD-Instanzen aufzuteilen, um die Gesamtzeit der Testausführung zu reduzieren. Weitere Informationen zu Gradle Managed Devices und den zugehörigen Funktionen finden Sie unter Skalieren Sie Ihre Tests mit Gradle Managed Devices.

R8-Unterstützung mit Zuordnungsdateien basierend auf DEX-Anweisungsoffsets

Bei der Optimierung von Zeileninformationen kann R8 jetzt die Informationen in gemeinsam genutzten Debug-Informationsobjekten mit Zeilentabellen basierend auf Anweisungsoffsets codieren. Dies reduziert den Aufwand für die Over-of-Line-Informationen erheblich. Dies hat den Effekt, dass Zeilen in Methoden nicht mehr aufeinanderfolgen, sondern je nach Größe der Anweisungen in Intervallen springen können. Beachten Sie, dass einige Tools diese gemeinsame Codierung nicht berücksichtigen.

Darüber hinaus unterstützen Android-VMs ab O (API-Level 26) das Drucken von Anweisungsoffsets in Stacktraces, wenn die Methode keine Informationen zur Zeilennummer hat. Bei der Kompilierung mit minSdk 26 oder höher und ohne Informationen zur Quelldatei entfernt R8 die Zeilennummerninformationen vollständig.

Zustandslose Lambdas sind keine Singletons mehr

Zustandslose Lambdas werden beim Entzuckern nicht mehr als Singletons zugeordnet. Die Darstellung als Singleton erhöht den Codegrößen-Overhead aufgrund des hinzugefügten Feld- und Klasseninitialisierers sowie aufgrund der statischen Klasseninitialisierung mit dem Start-Overhead. Zustandslose Lambdas werden jetzt an Nutzungsstandorten auf die gleiche Weise zugewiesen wie zustandsorientierte Lambdas (Lambdas mit Erfassungen).

Mit R8 wird ein Bestätigungsverlangsamung bei Android-Laufzeiten vermieden

Um Leistungsprobleme bei Android-Laufzeiten (Dalvik und ART) zu vermeiden, führt R8 (nicht D8) jetzt Bibliotheks-Stubs ein und umreißt Aufrufe von Bibliotheksmethoden für Bibliotheksklassen und -methoden, die zur Laufzeit möglicherweise nicht vorhanden sind. Dadurch werden viele Überprüfungsprobleme eliminiert und die Laufzeitleistung verbessert. Diese Funktion ist immer aktiviert.

Unterstützung für JDK-11-APIs mit Java 8+ API-Entsugaring

Bei Verwendung der CoreLibraryDesugaring-Abhängigkeit wird jetzt eine auf JDK-11 basierende Implementierungsbibliothek unterstützt. Weitere Informationen finden Sie imdesugar_jdk_libs Änderungsprotokoll.

Patch releases

Im Folgenden finden Sie eine Liste der Patch-Releases in Android Studio Dolphin.

Android Studio Dolphin | Patch 1 2021.3.1 (Oktober 2022)

Mit Patch 1 unterstützt Android Studio Dolphin jetzt das Kotlin-Plug-in 1.7.20. Dieses kleinere Update umfasst außerdem die folgenden Fehlerkorrekturen:

Behobene Probleme
Android Gradle-Plug-in
Beim Ausführen instrumentierter Android-Tests über Gradle kann die Entsugarierung nicht richtig angewendet werden
AGP 7.3.0 bricht Gradle-Synchronisierung für Gradle-Plattformprojekte ab
Dexer (D8)
Fügen Sie eine öffentliche API für die Konfliktlösung beim Zusammenführen von DEX hinzu (damit Baizel doppelte Klassen zulassen kann)
Importieren/Synchronisieren
Der Gradle-Projektimport schlägt nach dem Upgrade von Chipmunk-Patch 2 (2021.2.1) fehl
Infomaterial
NPE in AarResourceRepositoryCache.createCachingData (AS Dolphin+)
Shrinker (R8)
Kotlin-Metadaten werden nicht kopiert, wenn Typersetzungsfelder verwendet werden
Unerwartete Konvertierung des ungenauen Typs: TOP (alles)
Gradle 7.3.0 verursacht den APK-Build-Fehler com.android.tools.r8.CompilationFailedException
Entfernen inaktiver Standardkonstruktoren im Kompatibilitätsmodus
Konflikt mit JetBrains Markdown
Unterstützung für ThreadLocal.withInitial(java.util.function.Supplier
AGP 7.3 generiert DEX für Klassen mit fehlerhaftem Konstruktor.
Unerwarteter Versuch zu bestimmen, ob Nicht-CF-Code desugarieren muss
ktor VerifyError
Während der Kompilierung wurde ein nicht definierter Wert bei der Verarbeitung von okio-jvm 3.2.0 ausgelöst
Kompilierungsfehler aufgrund des Inline-Objekts einer Klasse mit indirekten Instanzen von Nutzern
java.lang.IllegalAccessError mit R8 3.3.75