Android Studio 3.4 (April 2019)

Android Studio 3.4 ist eine Hauptversion mit einer Vielzahl neuer Funktionen und Verbesserungen.

3.4.2 (Juli 2019)

Dieses kleine Update enthält verschiedene Fehlerkorrekturen und Leistungsverbesserungen. Eine Liste der wichtigsten Fehlerkorrekturen finden Sie im entsprechenden Beitrag im Blog „Release Updates“.

3.4.1 (Mai 2019)

Dieses kleine Update enthält verschiedene Fehlerkorrekturen und Leistungsverbesserungen. Eine Liste der wichtigsten Fehlerkorrekturen finden Sie im entsprechenden Beitrag im Blog „Release Updates“.

3.4.0 Bekannte Probleme

  • Die Profilerstellung ist deaktiviert, wenn Sie Ihre App auf einem Gerät bereitstellen, auf dem die Android Q-Betaversion ausgeführt wird.

  • Wenn Sie die Datenbindungsbibliothek verwenden, schlägt LiveDataListener.onChanged() möglicherweise mit einer NPE fehl. Eine Lösung für dieses Problem wird in Android Studio 3.4.1 enthalten sein und ist in der aktuellen Vorabversion von Android Studio 3.5 bereits verfügbar. (Siehe Problem Nr. 122066788)

IntelliJ IDEA 2018.3.4

Die zentrale Android Studio-IDE wurde mit Verbesserungen von IntelliJ IDEA bis zum Release 2018.3.4 aktualisiert.

Updates für Android Gradle-Plug-in 3.4.0

Informationen zu den Neuerungen im Android-Gradle-Plug-in 3.4.0 finden Sie in den Versionshinweisen.

Dialogfeld „Neue Projektstruktur“

Das neue Dialogfeld für die Projektstruktur (Project Structure Dialog, PSD) vereinfacht das Aktualisieren von Abhängigkeiten und das Konfigurieren verschiedener Aspekte Ihres Projekts wie Module, Build-Varianten, Signaturkonfigurationen und Build-Variablen.

Sie können das PSD öffnen, indem Sie in der Menüleiste File > Project Structure (Datei > Projektstruktur) auswählen. Sie können die PSD auch öffnen, indem Sie unter Windows und Linux Ctrl+Shift+Alt+S oder unter macOS Command+; (Semikolon) drücken. Beschreibungen einiger der neuen und aktualisierten Abschnitte der PSD finden Sie unten.

Variablen

Im neuen Variablenabschnitt der PSD können Sie Build-Variablen erstellen und verwalten, z. B. solche, um Versionsnummern für Abhängigkeiten im gesamten Projekt einheitlich zu halten.

  • Sie können Build-Variablen, die bereits in den Gradle-Build-Skripts Ihres Projekts vorhanden sind, schnell aufrufen und bearbeiten.
  • Fügen Sie neue Build-Variablen auf Projekt- oder Modulebene direkt aus dem PSD hinzu.

Hinweis: Wenn in Ihren vorhandenen Build-Konfigurationsdateien Werte über komplexe Groovy-Skripts zugewiesen werden, können Sie diese Werte möglicherweise nicht über die PSD bearbeiten. Außerdem können in Kotlin geschriebene Build-Dateien mit dem PSD nicht bearbeitet werden.

Module

Konfigurieren Sie Attribute, die auf alle Build-Varianten in einem vorhandenen Modul angewendet werden, oder fügen Sie Ihrem Projekt im Bereich Module neue Module hinzu. Hier können Sie beispielsweise defaultConfig-Attribute konfigurieren oder Signaturkonfigurationen verwalten.

Abhängigkeiten

Prüfen und visualisieren Sie jede Abhängigkeit im Abhängigkeitsdiagramm Ihres Projekts, das von Gradle während der Projektsynchronisierung aufgelöst wurde. Gehen Sie dazu so vor:

  1. Wählen Sie im linken Bereich der PSD die Option Abhängigkeiten aus.
  2. Wählen Sie im Bereich Module ein Modul aus, für das Sie die aufgelösten Abhängigkeiten prüfen möchten.
  3. Öffnen Sie auf der rechten Seite der PSD den Bereich Aufgelöste Abhängigkeiten, wie unten gezeigt.

Sie können auch schnell Abhängigkeiten zu Ihrem Projekt suchen und Ihrem Projekt hinzufügen. Wählen Sie dazu zuerst ein Modul aus dem Abschnitt Abhängigkeiten des PSD aus, klicken Sie im Abschnitt Deklarierte Abhängigkeiten auf das Pluszeichen und wählen Sie den Typ der Abhängigkeit aus, die Sie hinzufügen möchten.

Je nach ausgewähltem Abhängigkeitstyp sollte ein Dialogfeld wie das folgende angezeigt werden, über das Sie die Abhängigkeit zum Modul hinzufügen können.

Varianten erstellen

In diesem Abschnitt der PSD erstellen und konfigurieren Sie Build-Varianten und Produktvarianten für jedes Modul in Ihrem Projekt. Sie können unter anderem Manifest-Platzhalter, ProGuard-Dateien und Signaturschlüssel hinzufügen.

Vorschläge

Informationen zu Updates für Projektabhängigkeiten und Build-Variablen finden Sie im Abschnitt Vorschläge (siehe unten).

Neuer Resource Manager

Resource Manager ist ein neues Toolfenster zum Importieren, Erstellen, Verwalten und Verwenden von Ressourcen in Ihrer Anwendung. Sie können das Toolfenster öffnen, indem Sie in der Menüleiste View > Tool Windows > Resource Manager auswählen. Mit dem Resource Manager haben Sie folgende Möglichkeiten:

  • Ressourcen visualisieren:Du kannst dir Drawables, Farben und Layouts als Vorschau ansehen, um schnell die benötigten Ressourcen zu finden.
  • Bulk-Import:Du kannst mehrere Drawable-Assets gleichzeitig importieren. Dazu kannst du sie entweder per Drag-and-drop in das Toolfenster von Resource Manager ziehen oder den Assistenten zum Importieren von Drawables verwenden. Um auf den Assistenten zuzugreifen, klicken Sie links oben im Toolfenster auf das Pluszeichen (+) und wählen Sie dann im Drop-down-Menü Dawables importieren aus.
  • SVGs in VectorDrawable-Objekte konvertieren:Mit dem Assistenten Drawables importieren können Sie Ihre SVG-Bilder in VectorDrawable-Objekte konvertieren.
  • Assets per Drag-and-drop hinzufügen:Aus dem Toolfenster von Resource Manager können Sie Drawables per Drag-and-drop sowohl in die Design- als auch in die XML-Ansicht des Layout-Editors ziehen.
  • Alternative Versionen ansehen: Sie können jetzt alternative Versionen Ihrer Ressourcen aufrufen. Klicken Sie dazu im Fenster Tool doppelt auf eine Ressource. In dieser Ansicht sehen Sie die verschiedenen von Ihnen erstellten Versionen und die enthaltenen Qualifier.
  • Kachel- und Listenansichten:Sie können die Ansicht im Toolfenster ändern, um Ihre Ressourcen unterschiedlich anzuordnen.

Weitere Informationen findest du im Leitfaden zum Verwalten von App-Ressourcen.

Build-IDs bei der Profilerstellung und der Fehlerbehebung für APKs prüfen

Wenn du Debugging-Symboldateien für die gemeinsam genutzten .so-Bibliotheken in deinem APK bereitstellst, wird in Android Studio überprüft, ob die Build-ID der bereitgestellten Symboldateien mit der Build-ID der .so-Bibliotheken im APK übereinstimmt.

Wenn Sie die nativen Bibliotheken in Ihrem APK mit einer Build-ID erstellen, prüft Android Studio, ob die Build-ID in Ihren Symboldateien mit der Build-ID in Ihren nativen Bibliotheken übereinstimmt, und lehnt die Symboldateien ab, wenn sie nicht übereinstimmen. Wenn Sie Ihre Builds nicht mit einer Build-ID erstellt haben, kann die Bereitstellung falscher Symboldateien zu Problemen beim Debugging führen.

R8 standardmäßig aktiviert

R8 integriert Entsorgung, Verkleinerung, Verschleierung, Optimierung und Dexing in einem Schritt, was zu deutlichen Verbesserungen der Build-Leistung führt. R8 wurde mit dem Android-Gradle-Plug-in 3.3.0 eingeführt und ist jetzt standardmäßig für App- und Android-Bibliotheksprojekte mit Plug-in 3.4.0 und höher aktiviert.

Die folgende Abbildung bietet einen allgemeinen Überblick über den Kompilierungsprozess vor der Einführung von R8.

Vor R8 war ProGuard ein anderer Schritt zur Kompilierung als Dexing und Entzugaren.

Mit R8 werden nun Entsugaren, Schrumpfen, Verschleieren, Optimieren und Dexing (D8) in einem Schritt abgeschlossen, wie unten dargestellt.

Bei R8 werden Entsugaren, Verkleinern, Verschleierung, Optimierung und Dexing in einem einzigen Kompilierungsschritt ausgeführt.

Beachten Sie, dass R8 so konzipiert ist, dass es mit Ihren vorhandenen ProGuard-Regeln funktioniert. Sie müssen also wahrscheinlich keine Maßnahmen ergreifen, um von R8 zu profitieren. Da es sich um eine andere Technologie als ProGuard handelt, die speziell für Android-Projekte entwickelt wurde, kann eine Verkleinerung und Optimierung dazu führen, dass Code entfernt wird, den ProGuard möglicherweise nicht hat. In diesem unwahrscheinlichen Fall müssen Sie also möglicherweise zusätzliche Regeln hinzufügen, um diesen Code in Ihrer Build-Ausgabe beizubehalten.

Wenn bei der Verwendung von R8 Probleme auftreten, lesen Sie die FAQ zur R8-Kompatibilität, um zu prüfen, ob es eine Lösung für Ihr Problem gibt. Wenn keine Lösung dokumentiert ist, melden Sie einen Fehler. Sie können R8 deaktivieren, indem Sie der Datei gradle.properties Ihres Projekts eine der folgenden Zeilen hinzufügen:

    # Disables R8 for Android Library modules only.
    android.enableR8.libraries = false
    # Disables R8 for all modules.
    android.enableR8 = false
    
  

Hinweis:Wenn Sie für einen bestimmten Build-Typ in der Datei build.gradle Ihres App-Moduls useProguard auf false festlegen, verwendet das Android-Gradle-Plug-in R8, um den Code Ihrer App für diesen Build-Typ zu verkleinern, unabhängig davon, ob Sie R8 in der gradle.properties-Datei Ihres Projekts deaktivieren.

Alle von der Navigationskomponente unterstützten Argumenttypen werden jetzt im Navigationseditor unterstützt. Weitere Informationen zu unterstützten Typen finden Sie unter Daten zwischen Zielen übergeben.

Verbesserungen am Layout-Editor {:#layout-editor}

Der Bereich Attribute im Layout-Editor wurde zu einer einzelnen Seite mit Abschnitten zusammengefasst, die sich maximieren und konfigurieren lassen. Der Bereich Attribute enthält ebenfalls die folgenden Aktualisierungen:

  • Im neuen Abschnitt Deklarierte Attribute werden die in der Layoutdatei angegebenen Attribute aufgeführt. Hier können Sie schnell neue Attribute hinzufügen.
  • Im Bereich Attribute werden jetzt auch Indikatoren neben jedem Attribut angezeigt, die ausgefüllt sind, wenn der Wert des Attributs eine Ressourcenreferenz ist, ansonsten leer.
  • Attribute mit Fehler- oder Warnungen sind jetzt hervorgehoben. Rote Markierungen weisen auf Fehler hin (z. B. bei Verwendung ungültiger Layoutwerte) und orangefarbene Markierungen weisen auf Warnungen hin (z. B. bei hartcodierten Werten).

Neue Absichtsaktion zum schnellen Import von Abhängigkeiten

Wenn Sie ab jetzt bestimmte Jetpack- und Firebase-Klassen in Ihrem Code verwenden, empfiehlt eine neue Intent-Aktion, die erforderliche Abhängigkeit der Gradle-Bibliothek zu Ihrem Projekt hinzuzufügen (falls noch nicht geschehen). Wenn Sie beispielsweise auf die Klasse WorkManager verweisen, ohne zuvor die erforderliche android.arch.work:work-runtime-Abhängigkeit zu importieren, können Sie dies mit einer Intent-Aktion ganz einfach mit einem einzigen Klick tun (siehe unten).

Da Jetpack die Supportbibliothek in diskrete Pakete umverpackt hat, die sich leichter verwalten und aktualisieren lassen, hilft Ihnen diese Absichtsaktion dabei, schnell nur die Abhängigkeiten hinzuzufügen, die Sie für die Jetpack-Komponenten benötigen, die Sie verwenden möchten.