Android Studio 3.1 (März 2018)

Android Studio 3.1.0 ist ein wichtiger Release, der eine Vielzahl neuer Funktionen und Verbesserungen enthält.

3.1.4 (August 2018)

Dieses Update für Android Studio 3.1 enthält die folgenden Änderungen und Korrekturen:

  • Die gebündelte Kotlin-Version ist jetzt 1.2.50.
  • Neue Projekte werden mit kotlin-stdlib-jdk* artifacts, und nicht mehr mit kotlin-stdlib-jre* Artefakten erstellt, die eingestellt wurden.
  • Die R8-Analyse von ProGuard-Regeln wurde verbessert.
  • Die folgenden Fehler wurden behoben:
    • Der Versuch, die Kotlin-Hauptklasse auszuführen, ist mit einem Fehler fehlgeschlagen: "Error: Could not find or load main class..."
    • R8 ist bei bestimmten Optimierungen in eine Endlosschleife geraten.
    • Wenn der Befehl Rerun failed tests (Fehlgeschlagene Tests noch einmal ausführen) im Fenster Run (Ausführen) verwendet wurde , wurde manchmal fälschlicherweise die Meldung „No tests were found“ (Keine Tests gefunden) zurückgegeben.
    • D8 hat invoke-virtual Instanzen nicht korrekt verarbeitet, was zu einem Absturz mit einem VerifyError: invoke-super/virtual can't be used on private method geführt hat
    • Der Data Binding-Compiler war von einer alten Version von com.android.tools:annotations abhängig. Der Compiler verwendet jetzt, sofern verfügbar, Tools-Annotationen aus dem Basisprojekt.
    • Android Studio ist bei Fragmentübergängen abgestürzt, wenn Profiler verwendet wurden.
    • Der Debugger ist beim Debuggen eines Layouts mit einem Textfeld abgestürzt.
    • D8 konnte einige ZIP-Dateien mit Sonderzeichen nicht lesen.

3.1.3 (Juni 2018)

Dieses Update für Android Studio 3.1 enthält Korrekturen für die folgenden Fehler:

  • Speicherlecks haben dazu geführt, dass Android Studio langsam und nicht mehr reaktionsfähig wurde nachdem der Layout Editor verwendet wurde. Dieses Update enthält Korrekturen für die meisten dieser Probleme. Wir planen, bald ein weiteres Update zu veröffentlichen, um zusätzliche Speicherlecks zu beheben.
  • Einige mit D8 erstellte Anwendungen sind auf einigen Verizon Ellipsis-Tablets abgestürzt.
  • Die Installation von mit D8 erstellten Anwendungen ist auf Geräten mit Android 5.0 oder 5.1 (API-Level 21 oder 22) mit einem INSTALL_FAILED_DEXOPT Fehler fehlgeschlagen.
  • Einige Anwendungen, die die OkHttp-Bibliothek verwendet haben und mit D8 sind auf Geräten mit Android 4.4 (API-Level 19) abgestürzt.
  • Android Studio konnte manchmal nicht gestartet werden, mit einer ProcessCanceledException während der Klasseninitialisierung für com.intellij.psi.jsp.JspElementType.

3.1.2 (April 2018)

Dieses Update für Android Studio 3.1 enthält Korrekturen für die folgenden Fehler:

  • In einigen Fällen ist Android Studio beim Beenden unbegrenzt hängen geblieben.
  • Bei Builds, die mit Quellsätzen konfiguriert wurden, ist mit der folgenden Meldung ein Fehler aufgetreten, wenn Instant Run aktiviert war:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • Wenn Instant Run aktiviert war, sind Builds neuer Kotlin-Projekte fehlgeschlagen, wenn sie mit dem Befehl Run ausgelöst wurden.
  • Beim Bearbeiten der Datei build.gradle gab es manchmal eine spürbare Verzögerung zwischen dem Eingeben eines Zeichens und dem Erscheinen des Zeichens auf dem Bildschirm.
  • Bei der Dexing-Phase ist in einigen Projekten mit einer großen Anzahl von Modulen oder externen Abhängigkeiten ein Build-Fehler aufgetreten, mit der folgenden Fehlermeldung:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • Bei der Berechnung der D8-Haupt-DEX-Liste wurden einige reflektierende Aufrufe nicht berücksichtigt.

Dieses Update enthält auch Änderungen, die das Ausführen von Lint-Prüfungen über Gradle erheblich beschleunigen.

3.1.1 (April 2018)

Dieses Update für Android Studio 3.1 enthält Korrekturen für die folgenden Fehler:

  • In einigen Fällen wurde beim ersten Öffnen eines in Android Studio 3.0 erstellten Projekts in Android Studio 3.1 die Gradle-Aufgabe „Make“ (Erstellen) aus dem Bereich Before launch (Vor dem Start) in den Run/Debug Konfigurationen für Ausführen/Debuggen entfernt. Das Ergebnis war, dass Projekte nicht erstellt wurden, wenn auf die Schaltfläche Run (Ausführen) oder Debug (Debuggen) geklickt wurde. Dies führte wiederum zu Fehlern wie der Bereitstellung falscher APKs und Abstürzen bei der Verwendung von Instant Run.

    Um dieses Problem zu beheben, fügt Android Studio 3.1.1 die Gradle-Aufgabe „Make“ (Erstellen) der Ausführungskonfiguration für Projekte hinzu, bei denen dieser Eintrag fehlt. Diese Änderung erfolgt nach der ersten Gradle-Synchronisierung beim Laden des Projekts.

  • Der Debugger ist beim Debuggen eines Layouts mit einem Textfeld abgestürzt, wenn die erweiterte Profilerstellung aktiviert war.
  • Android Studio ist hängen geblieben, nachdem Sie auf Build Variants (Build-Varianten) geklickt haben.
  • AAR-Dateien (Android-Archiv) wurden zweimal extrahiert, einmal während der Gradle Synchronisierung und einmal während des Gradle-Build-Prozesses.
  • In einigen Vektorgrafiken, die aus SVG-Dateien importiert wurden, haben Elemente gefehlt.
  • Die Warnung bezüglich der Einstellung der compile Abhängigkeitskonfiguration wurde mit besseren Anleitungen zu den Konfigurationen implementation und api aktualisiert. Weitere Informationen zur Migration von der Verwendung der compile Konfiguration finden Sie in der Dokumentation zu den neuen Abhängigkeitskonfigurationen.

Programmierung/IDE

IntelliJ 2017.3.3

Die Android Studio-Kern-IDE wurde mit Verbesserungen aus IntelliJ IDEA bis zum Release 2017.3.3 aktualisiert. Zu den Verbesserungen gehören eine bessere Analyse des Kontrollflusses für Sammlungen und Strings, eine verbesserte Null-Zulässigkeit-Inferenz, neue Schnellkorrekturen und vieles mehr.

Weitere Informationen finden Sie in den JetBrains-Versionshinweisen für IntelliJ IDEA 2017.2 und 2017.3, sowie in den JetBrains-Versionshinweisen für Bugfix-Updates.

Verbesserungen bei der SQL-Bearbeitung mit Room

Wenn Sie die Room-Datenbankbibliothek, verwenden, können Sie von mehreren Verbesserungen bei der SQL-Bearbeitung profitieren:

  • Die Codevervollständigung in einer Query versteht SQL-Tabellen (Entitäten), Spalten, Abfrageparameter, Aliase, Joins, Unterabfragen und WITH-Klauseln.
  • Die SQL-Syntaxhervorhebung funktioniert jetzt.
  • Sie können mit der rechten Maustaste auf einen Tabellennamen in SQL klicken und ihn umbenennen. Dadurch wird auch der entsprechende Java- oder Kotlin-Code neu geschrieben (einschließlich z. B. des Rückgabetyps der Abfrage). Das Umbenennen funktioniert auch in der anderen Richtung, so wird beim Umbenennen einer Java-Klasse oder eines Java-Felds der entsprechende SQL Code neu geschrieben.
  • SQL-Verwendungen werden angezeigt, wenn Sie Find usages (Verwendungen suchen) verwenden (Rechtsklick und im Kontextmenü Find usages (Verwendungen suchen) auswählen).
  • Wenn Sie zur Deklaration einer SQL-Entität im Java- oder Kotlin-Code navigieren möchten, können Sie die Strg-Taste (Befehlstaste auf dem Mac) gedrückt halten und auf die Entität klicken.

Informationen zur Verwendung von SQL mit Room finden Sie unter Daten in einer lokalen Datenbank mit Room speichern.

Updates für die Datenbindung

Dieses Update enthält mehrere Verbesserungen für die Datenbindung:

  • Sie können jetzt ein LiveData Objekt als beobachtbares Feld in Ausdrücken für die Datenbindung verwenden. Die ViewDataBinding Klasse enthält jetzt die neue setLifecycle() Methode, mit der Sie LiveData Objekte beobachten können.

  • Die ObservableField Klasse kann jetzt andere Observable Objekte in ihrem Konstruktor akzeptieren.

  • Sie können eine Vorschau eines neuen inkrementellen Compilers für Ihre Datenbindung Klassen aufrufen. Weitere Informationen zu diesem neuen Compiler und eine Anleitung zum Aktivieren finden Sie unter Data Binding Compiler V2.

    Zu den Vorteilen des neuen Compilers gehören:

    • ViewBinding-Klassen werden vom Android -Plug-in für Gradle vor dem Java-Compiler generiert.
    • Die generierten Bindungsklassen von Bibliotheken bleiben beim Kompilieren der App erhalten und werden nicht jedes Mal neu generiert. Dies kann die Leistung bei Projekten mit mehreren Modulen erheblich verbessern.

Compiler und Gradle

D8 ist der Standard-DEX Compiler

Der D8-Compiler wird jetzt standardmäßig zum Generieren von DEX-Bytecode verwendet.

Dieser neue DEX-Compiler bietet mehrere Vorteile, darunter:

  • Schnellere Dexing-Phase
  • Geringere Arbeitsspeichernutzung
  • Verbesserte Codeerstellung (bessere Registerzuweisung, intelligentere String Tabellen)
  • Besseres Debugging beim Durchlaufen von Code

Sie müssen keine Änderungen an Ihrem Code oder Ihrem Entwicklungs workflow vornehmen, um diese Vorteile zu nutzen, es sei denn, Sie haben den D8-Compiler zuvor manuell deaktiviert.

Wenn Sie android.enableD8 in Ihrer gradle.properties auf false gesetzt haben, löschen Sie dieses Flag oder setzen Sie es auf true:

        android.enableD8=true
      

Weitere Informationen finden Sie unter Neuer DEX-Compiler.

Inkrementelles Desugaring

Bei Projekten, die Java 8-Sprachfunktionen verwenden, ist das inkrementelle Desugaring standardmäßig aktiviert, was die Build- Zeiten verbessern kann.

Beim Desugaring wird syntaktischer Zucker in eine Form umgewandelt, die der Compiler effizienter verarbeiten kann.

Sie können das inkrementelle Desugaring deaktivieren, indem Sie Folgendes in der Datei gradle.properties Ihres Projekts angeben:

        android.enableIncrementalDesugaring=false
      

Vereinfachtes Ausgabefenster

Die Gradle Console (Gradle-Konsole) wurde durch das Fenster Build (Erstellen) ersetzt, das die Tabs Sync (Synchronisieren) und Build (Erstellen) enthält.

Weitere Informationen zur Verwendung des neuen, vereinfachten Fensters Build finden Sie unter Build-Prozess überwachen.

Batch-Updates und Nebenläufigkeit bei der Indexierung

Die Gradle-Synchronisierung und die IDE-Indexierung sind jetzt viel effizienter, wodurch Zeit für viele redundante Indexierungsvorgänge gespart wird.

C++ und LLDB

Wir haben viele Verbesserungen an Qualität und Leistung in den Phasen der Programmierung, Synchronisierung, Erstellung und des Debuggings der C++-Entwicklung vorgenommen. Zu den Verbesserungen gehören:

  • Wenn Sie mit großen C++-Projekten arbeiten, sollten Sie eine deutliche Verbesserung bei der Zeit für die Erstellung von Symbolen feststellen. Auch die Synchronisierungszeit ist bei großen Projekten erheblich kürzer.

  • Die Leistung beim Erstellen und Synchronisieren mit CMake wurde durch eine aggressivere Wiederverwendung von im Cache gespeicherten Ergebnissen verbessert.

  • Durch das Hinzufügen von Formatierern („Pretty Printers“) für weitere C++-Datenstrukturen ist die LLDB-Ausgabe leichter zu lesen.

  • LLDB funktioniert jetzt nur mit Android 4.1 (API-Level 16) und höher.

Hinweis: Das native Debugging mit Android Studio 3.0 oder höher funktioniert nicht unter 32-Bit-Windows. Wenn Sie 32-Bit-Windows verwenden und nativen Code debuggen müssen, verwenden Sie Android Studio 2.3.

Kotlin

Kotlin auf Version 1.2.30 aktualisiert

Android Studio 3.1 enthält Kotlin Version 1.2.30.

Kotlin-Code wird jetzt mit der Befehlszeilen-Lint-Prüfung analysiert

Wenn Sie Lint über die Befehlszeile ausführen, werden jetzt Ihre Kotlin-Klassen analysiert.

Für jedes Projekt, für das Sie Lint ausführen möchten, das Maven Repository von Google muss in der Datei auf oberster Ebene build.gradle enthalten sein. Das Maven-Repository ist bereits in Projekten enthalten, die in Android Studio 3.0 und höher erstellt wurden.

Tools zur Leistungssteigerung

Native C++-Prozesse mit dem CPU Profiler testen

Der CPU Profiler enthält jetzt eine Standardkonfiguration zum Aufzeichnen von Stichproben-Traces der nativen Threads Ihrer App. Sie können diese Konfiguration verwenden, indem Sie Ihre App auf einem Gerät mit Android 8.0 (API-Level 26) oder höher bereitstellen und dann im Drop-down-Menü für die Aufzeichnungskonfigurationen des CPU Profiler die Option Sampled (Native) (Stichprobenbasiert (nativ)) auswählen. Danach können Sie einen Trace wie gewohnt aufzeichnen und untersuchen.

Sie können Standardeinstellungen wie das Stichprobenintervall ändern, indem Sie eine Aufzeichnungskonfiguration erstellen.

Wenn Sie wieder Java-Threads verfolgen möchten, wählen Sie entweder die Sampled (Java) (Stichprobenbasiert (Java)) oder Instrumented (Java) (Instrumentiert (Java)) Konfiguration aus.

CPU-Traces, Ergebnisse der Arbeitsspeicherzuweisung und Heap-Dumps filtern

Der CPU Profiler und derSpeicher-Profiler enthalten eine Suchfunktion, mit der Sie Ergebnisse aus der Aufzeichnung eines Methoden -Trace, der Arbeitsspeicherzuweisungen oder eines Heap-Dumps filtern können.

Klicken Sie zum Suchen rechts oben im Steuerfeld auf Filter , geben Sie Ihre Abfrage ein und drücken Sie die Eingabetaste.

Tipp: Sie können das Suchfeld auch mit Strg + F (Befehlstaste + F auf dem Mac) öffnen.

Auf dem Tab Flame Chart (Flammendiagramm) des CPU Profiler werden Aufrufstacks, die Methoden enthalten, die mit Ihrer Suchanfrage übereinstimmen, hervorgehoben und auf die linke Seite des Diagramms verschoben.

Weitere Informationen zum Filtern nach Methoden-, Klassen- oder Paketnamen finden Sie unter Method-Traces aufzeichnen und untersuchen.

Tab „Request“ (Anfrage) im Network Profiler

Der Network Profiler enthält jetzt den Tab Request (Anfrage), der Details zu Netzwerkanfragen während der ausgewählten Zeitachse enthält. In früheren Versionen enthielt der Network Profiler nur Informationen zu Netzwerkantworten.

Tab „Thread View“ (Thread-Ansicht) im Network Profiler

Nachdem Sie einen Teil der Zeitachse im Network Profiler ausgewählt haben, können Sie einen der folgenden Tabs auswählen, um weitere Details zur Netzwerkaktivität in diesem Zeitraum zu sehen:

  • Verbindungsansicht: Enthält dieselben Informationen wie frühere Versionen von Android Studio. Hier werden die Dateien aufgeführt, die während des ausgewählten Zeitraums auf allen CPU-Threads Ihrer App gesendet oder empfangen wurden. Für jede Anfrage können Sie Größe, Typ, Status und Übertragungsdauer prüfen.
  • Thread View (Thread-Ansicht): Zeigt die Netzwerkaktivität der einzelnen CPU-Threads Ihrer App an. In dieser Ansicht können Sie sehen, welcher Thread Ihrer App für die einzelnen Netzwerkanfragen verantwortlich ist

Layout Inspector

Der Layout Inspector hat neue Funktionen erhalten, darunter einige Funktionen, die zuvor von den eingestellten Tools Hierarchy Viewer und Pixel Perfect bereitgestellt wurden:

  • Zoom-Schaltflächen und Tastenkombinationen zum Navigieren und Untersuchen von Layouts
  • Referenzraster-Overlay
  • Möglichkeit, ein Referenzbild zu laden und als Overlay zu verwenden (nützlich, um Ihr Layout mit einem UI-Mock-up zu vergleichen)
  • Render subtree preview (Vorschau des Unterbaums rendern), um eine Ansicht in einem komplexen Layout zu isolieren

Layout Editor

Die Palette im Layout Editor wurde erheblich verbessert:

  • Neuorganisation der Kategorien für Ansichten und Layouts.
  • Neue Kategorie Common (Allgemein) für Ansichten und Layouts, die Sie mit dem Befehl Favorite (Favorit) hinzufügen können.
  • Verbesserte Suche nach Ansichten und Layouts.
  • Neue Befehle zum Öffnen der Dokumentation für ein bestimmtes Ansichts- oder Layout-Element.

Mit dem neuen Befehl Convert view (Ansicht konvertieren) im Component tree (Komponentenbaum) oder im Design Editor können Sie eine Ansicht oder ein Layout in einen anderen Ansichts- oder Layouttyp konvertieren.

Mit den neuen Schaltflächen Create a connection im Ansichts-Inspector oben im Fenster Attributes können Sie jetzt ganz einfach Constraints für Elemente in der Nähe der ausgewählten Ansicht erstellen.

Ausführen und Instant Run

Das Verhalten der Option Use same selection for future launches (Dieselbe Auswahl für zukünftige Starts verwenden) im Dialogfeld Select deployment target (Bereitstellungsziel auswählen) wurde konsistenter gestaltet. Wenn die Option Use same selection (Dieselbe Auswahl verwenden) aktiviert ist, wird das Dialogfeld Select deployment target (Bereitstellungsziel auswählen) nur beim ersten Verwenden des Befehls Run (Ausführen) geöffnet, bis das ausgewählte Gerät nicht mehr verbunden ist.

Wenn Sie ein Gerät mit Android 8.0 (API-Level 26) oder höher verwenden, Instant Run kann Änderungen an Ressourcen bereitstellen, ohne dass die Anwendung neu gestartet werden muss. Das ist möglich, weil die Ressourcen in einer unterteilten APK enthalten sind.

Emulator

Informationen zu den Neuerungen und Änderungen im Emulator seit Android Studio 3.0 finden Sie in den Versionshinweisen zum Android Emulator von Version 27.0.2 bis Version 27.1.12.

Zu den wichtigsten Verbesserungen gehören:

  • Quick Boot-Snapshots zum Speichern des Emulatorstatus und für einen schnelleren Start. Mit dem Befehl Save now (Jetzt speichern) können Sie einen benutzerdefinierten Startstatus speichern.
  • Fensterloser Emulatorbildschirm.
  • System-Images für Android 8.0 (API-Level 26), Android 8.1 (API-Level 27) und Android P Entwicklervorschau.

Verbesserungen an Benutzeroberfläche und Nutzerfreundlichkeit Verbesserungen

Weitere Tooltips, Tastenkombinationen, und hilfreiche Meldungen

Wir haben an vielen Stellen in Android Studio Tooltips und hilfreiche Meldungen hinzugefügt.

Wenn Sie Tastenkombinationen für viele Befehle sehen möchten, bewegen Sie den Maus zeiger einfach über eine Schaltfläche, bis der Tooltip angezeigt wird.

Menü „Tools > Android“ entfernt

Das Menü Tools > Android wurde entfernt. Befehle die sich zuvor in diesem Menü befanden, wurden verschoben.

  • Viele Befehle wurden direkt unter das Tools Menü verschoben.
  • Der Befehl Sync project with gradle files wurde in das Menü File verschoben.
  • Der Befehl Device Monitor (Geräte-Monitor) wurde entfernt, wie beschrieben unten.

Device Monitor über die Befehlszeile verfügbar

In Android Studio 3.1 spielt der Device Monitor eine geringere Rolle als bisher. In vielen Fällen werden die Funktionen, die über den Device Monitor verfügbar sind, jetzt von neuen und verbesserten Tools bereitgestellt.

In der Dokumentation zum Device Monitor finden Sie eine Anleitung zum Aufrufen des Device Monitor über die Befehlszeile und Details zu den Tools, die über den Device Monitor verfügbar sind.