App erstellen und ausführen

Wenn Sie sehen möchten, wie Ihre App auf einem Gerät aussieht und sich verhält, müssen Sie sie erstellen und ausführen. In Android Studio werden neue Projekte so eingerichtet, dass Sie Ihre App mit nur wenigen Klicks auf einem virtuellen oder physischen Gerät bereitstellen können.

Dieser Überblick konzentriert sich darauf, wie Sie Android Studio verwenden, um Ihre App für Tests und die Fehlerbehebung zu erstellen und auszuführen. Informationen dazu, wie Sie Ihre App mit Android Studio erstellen, damit sie für Nutzer veröffentlicht werden kann, finden Sie unter App für die Veröffentlichung für Nutzer erstellen. Weitere Informationen zum Verwalten und Anpassen Ihres Builds mit oder ohne Android Studio finden Sie unter Build konfigurieren.

Einfaches Erstellen und Ausführen

So erstellen und führen Sie Ihre App aus:

  1. Wählen Sie in der Symbolleiste Ihre App im Menü „Ausführungskonfigurationen“ aus.
  2. Wählen Sie im Menü des Zielgeräts das Gerät aus, auf dem Sie Ihre App ausführen möchten.

    Menü für Zielgeräte

    Wenn Sie keine Geräte konfiguriert haben, müssen Sie entweder ein Android Virtual Device erstellen, um den Android-Emulator zu verwenden, oder ein physisches Gerät verbinden.

  3. Klicken Sie auf Ausführen .

Android Studio warnt Sie, wenn Sie versuchen, Ihr Projekt auf einem Gerät zu starten, dem ein Fehler oder eine Warnung zugeordnet ist. Durch die Verwendung von Symbolen und stilistischen Änderungen wird zwischen Fehlern (Geräteauswahlen, die zu einer fehlerhaften Konfiguration führen) und Warnungen (Geräteauswahlen, die zu unerwartetem Verhalten führen können, aber trotzdem ausgeführt werden können) unterschieden.

Build-Prozess überwachen

Wenn Sie Details zum Build-Prozess aufrufen möchten, wählen Sie View > Tool Windows > Build aus oder klicken Sie in der Symbolleiste des Toolfensters auf Build . Im Toolfenster Build werden die Aufgaben angezeigt, die Gradle zum Erstellen Ihrer App ausführt (siehe Abbildung 1).

Abbildung 1. Das Toolfenster Build in Android Studio.
  1. Tab „Synchronisieren“:Hier werden Aufgaben angezeigt, die von Gradle ausgeführt werden, um die Synchronisierung mit Ihren Projektdateien durchzuführen. Ähnlich wie beim Tab Build Output können Sie Elemente im Baum auswählen, um weitere Informationen zum Fehler zu erhalten, wenn ein Synchronisierungsfehler auftritt. Außerdem wird eine Zusammenfassung der Download-Auswirkungen angezeigt, damit Sie feststellen können, ob sich Abhängigkeits-Downloads negativ auf Ihren Build auswirken.
  2. Tab „Build Output“ (Build-Ausgabe): Hier werden die von Gradle ausgeführten Aufgaben als Baumstruktur angezeigt. Jeder Knoten stellt entweder eine Build-Phase oder eine Gruppe von Aufgabenabhängigkeiten dar. Wenn Sie Build- oder Kompilierungsfehler erhalten, sehen Sie sich den Baum an und wählen Sie ein Element aus, um die Fehlerausgabe zu lesen (siehe Abbildung 2).
    Abbildung 2. Prüfen Sie auf dem Tab Build Output (Build-Ausgabe), ob Fehlermeldungen angezeigt werden.
  3. Tab „Build Analyzer“:Hier finden Sie Informationen zur Analyse der Build-Leistung für Ihren Build. Weitere Informationen finden Sie unter Build-Leistung mit Build Analyzer analysieren.
  4. Restart (Neu starten): Die letzte Build-Aktion wird noch einmal ausgeführt. Wenn Sie zuletzt Build > Make Selected Module (Erstellen > Ausgewähltes Modul erstellen) ausgeführt haben, wird das aktuelle Modul erstellt. Wenn Sie zuletzt Build > Make Project ausgeführt haben, werden Zwischenbuild-Dateien für alle Module in Ihrem Projekt generiert.
  5. Filter:Hier werden Warnungen, Aufgaben oder beides herausgefiltert, die erfolgreich abgeschlossen wurden. So lassen sich Probleme in der Ausgabe leichter finden.

Wenn Ihre Build-Varianten Produktvarianten verwenden, ruft Gradle auch Aufgaben auf, um diese Produktvarianten zu erstellen. Wenn Sie die Liste aller verfügbaren Build-Aufgaben aufrufen möchten, klicken Sie auf View > Tool Windows > Gradle oder auf Gradle in der Tool-Fensterleiste.

Wenn während des Build-Prozesses ein Fehler auftritt, empfiehlt Gradle möglicherweise Befehlszeilenoptionen, mit denen Sie das Problem beheben können, z. B. --stacktrace oder --debug. So verwenden Sie Befehlszeilenoptionen in Ihrem Build-Prozess:

  1. Öffnen Sie das Dialogfeld Einstellungen oder Einstellungen:
    • Wählen Sie unter Windows oder Linux in der Menüleiste Datei > Einstellungen aus.
    • Wählen Sie unter macOS in der Menüleiste Android Studio > Preferences aus.
  2. Gehen Sie zu Build, Execution, Deployment > Compiler.
  3. Geben Sie im Textfeld neben Command-line Options (Befehlszeilenoptionen) Ihre Befehlszeilenoptionen ein.
  4. Klicken Sie auf OK, um die Änderungen zu speichern und das Fenster zu schließen.

Gradle wendet diese Befehlszeilenoptionen beim nächsten Versuch an, Ihre App zu erstellen.

Mit dem KI-Agenten erstellen und ausführen

Der KI-Agent in Android Studio hat Zugriff auf Tools, mit denen er Ihre App erstellen und bereitstellen und dann den Status der App in Ihrem Namen überprüfen kann. Im Agentenmodus kann der Agent Aufgaben wie die folgenden ausführen:

  • Stellen Sie Ihre App auf einem verbundenen physischen Gerät oder Emulator bereit.
  • Prüfen Sie den Bildschirm und machen Sie Screenshots, um Änderungen an der Benutzeroberfläche zu überprüfen.
  • Prüfen Sie Logcat auf Laufzeitfehler oder bestimmte Logmeldungen.
  • Mit Ihrer App interagieren: Verwenden Sie adb shell-Befehle, um zu navigieren oder Daten einzugeben.

Die Verwendung des KI-Agents zum Erstellen und Ausführen Ihrer App ist nützlich für mehrstufige Aufgaben, bei denen der Agent iterativ Änderungen vornehmen und prüfen muss, ob sie wie erwartet funktionieren.

Tools für die Geräteinteraktion in Android Studio
Abbildung 3:Der KI-Agent kann Ihnen helfen, Änderungen auf einem Gerät zu testen und zu überprüfen.

Erweiterte Funktionen für Build und Ausführung

Die Standardmethode zum Erstellen und Ausführen Ihrer App in Android Studio sollte für das Testen einer einfachen App ausreichen. Sie können diese Funktionen zum Erstellen und Ausführen jedoch auch für komplexere Anwendungsfälle verwenden:

  • Wenn Sie Ihre App im Fehlerbehebungsmodus bereitstellen möchten, klicken Sie auf Fehlerbehebung . Wenn Sie Ihre App im Debug-Modus ausführen, können Sie Haltepunkte in Ihrem Code festlegen, Variablen untersuchen und Ausdrücke zur Laufzeit auswerten sowie Debugging-Tools ausführen. Weitere Informationen finden Sie unter App debuggen.

  • Wenn Sie eine größere, komplexere App haben, verwenden Sie „Änderungen anwenden“, anstatt auf Ausführen zu klicken. Das spart Zeit, da Sie Ihre App nicht jedes Mal neu starten müssen, wenn Sie eine Änderung bereitstellen möchten. Weitere Informationen zu „Änderungen anwenden“ finden Sie im Abschnitt Inkrementelle Bereitstellung mit „Änderungen anwenden“.

  • Wenn Sie Jetpack Compose verwenden, ist Live Edit eine experimentelle Funktion, mit der Sie Composables in Echtzeit aktualisieren können, ohne noch einmal auf Ausführen klicken zu müssen. So können Sie sich auf das Schreiben von UI-Code konzentrieren, ohne ständig unterbrochen zu werden. Weitere Informationen finden Sie im Abschnitt Live-Bearbeitung (experimentell).

  • Wenn Sie eine App mit mehreren Build-Varianten oder ‑Versionen haben, können Sie im Toolfenster Build Variants auswählen, welche Build-Variante bereitgestellt werden soll. Weitere Informationen zum Ausführen einer bestimmten Build-Variante finden Sie im Abschnitt Build-Variante ändern.

  • Wenn Sie die Optionen für die Installation, den Start und das Testen von Apps optimieren möchten, können Sie die Run/Debug-Konfiguration ändern. Weitere Informationen zum Erstellen benutzerdefinierter Ausführungs-/Debugkonfigurationen finden Sie im Abschnitt Ausführungs-/Debugkonfigurationen erstellen.

  • Wir empfehlen, Android Studio für Ihre Entwicklungsanforderungen zu verwenden. Sie können Ihre App aber auch über die Befehlszeile auf einem virtuellen oder physischen Gerät bereitstellen. Weitere Informationen finden Sie unter App über die Befehlszeile erstellen.

Schrittweise bereitstellen mit „Änderungen übernehmen“

In Android Studio 3.5 und höher können Sie mit „Änderungen anwenden“ Code- und Ressourcenänderungen an Ihre laufende App übertragen, ohne die App neu starten zu müssen. In einigen Fällen ist es auch nicht erforderlich, die aktuelle Aktivität neu zu starten. So können Sie steuern, wie viel von Ihrer App neu gestartet wird, wenn Sie kleine, inkrementelle Änderungen bereitstellen und testen möchten, ohne den aktuellen Status Ihres Geräts zu beeinträchtigen.

„Änderungen anwenden“ verwendet Funktionen in der Android JVMTI-Implementierung, die auf Geräten mit Android 8.0 (API-Level 26) oder höher unterstützt werden. Weitere Informationen zur Funktionsweise von „Änderungen anwenden“ finden Sie unter Android Studio Project Marble: Apply Changes.

Voraussetzungen

„Änderungen anwenden“-Aktionen sind nur verfügbar, wenn die folgenden Bedingungen erfüllt sind:

  • Sie erstellen das APK Ihrer App mit einer Debug-Build-Variante.
  • Sie stellen Ihre App auf einem Zielgerät oder ‑emulator mit Android 8.0 (API‑Level 26) oder höher bereit.

„Änderungen übernehmen“ verwenden

Verwenden Sie die folgenden Optionen, wenn Sie Ihre Änderungen auf einem kompatiblen Gerät bereitstellen möchten:

Änderungen übernehmen und Aktivität neu starten Symbol „Änderungen anwenden und Aktivität neu starten“: Es wird versucht, sowohl Ihre Ressourcen- als auch Ihre Codeänderungen zu übernehmen, indem Ihre Aktivität neu gestartet wird, ohne dass Ihre App neu gestartet wird. Im Allgemeinen können Sie diese Option verwenden, wenn Sie Code im Hauptteil einer Methode oder eine vorhandene Ressource geändert haben.

Sie können diese Aktion auch ausführen, indem Sie Strg + Alt + F10 (Strg + Befehlstaste + Umschalttaste + R unter macOS) drücken.

Codeänderungen anwenden Symbol „Codeänderungen anwenden“ : Es wird versucht, nur Ihre Codeänderungen anzuwenden, ohne etwas neu zu starten. Im Allgemeinen können Sie diese Option verwenden, wenn Sie Code im Hauptteil einer Methode geändert, aber keine Ressourcen modifiziert haben. Wenn Sie sowohl Code als auch Ressourcen geändert haben, verwenden Sie stattdessen Änderungen übernehmen und Aktivität neu starten.

Sie können diese Aktion auch ausführen, indem Sie Strg + F10 (Strg + Befehlstaste + R unter macOS) drücken.

Ausführen : Alle Änderungen werden bereitgestellt und die App wird neu gestartet. Verwenden Sie diese Option, wenn die vorgenommenen Änderungen nicht mit einer der Optionen zum Anwenden von Änderungen angewendet werden können. Weitere Informationen zu den Arten von Änderungen, die einen Neustart der App erfordern, finden Sie im Abschnitt Einschränkungen von „Änderungen anwenden“.

Laufzeit-Fallback für „Änderungen anwenden“ aktivieren

Wenn Sie auf Änderungen übernehmen und Aktivität neu starten oder Codeänderungen übernehmen klicken, erstellt Android Studio ein neues APK und ermittelt, ob die Änderungen angewendet werden können. Wenn die Änderungen nicht angewendet werden können und dazu führen würden, dass „Änderungen übernehmen“ fehlschlägt, werden Sie in Android Studio aufgefordert, Ihre App stattdessen noch einmal auszuführen Symbol „Ausführen“.

Wenn Sie nicht jedes Mal dazu aufgefordert werden möchten, können Sie Android Studio so konfigurieren, dass Ihre App automatisch neu ausgeführt wird, wenn Änderungen nicht angewendet werden können. So aktivieren Sie dieses Verhalten:

  1. Öffnen Sie das Dialogfeld Einstellungen oder Voreinstellungen:

    • Wählen Sie unter Windows oder Linux im Menü Datei > Einstellungen aus.
    • Wählen Sie unter macOS im Menü Android Studio > Preferences aus.
  2. Gehen Sie zu Build, Execution, Deployment > Deployment (Build, Ausführung, Bereitstellung > Bereitstellung).

  3. Aktivieren Sie die Kästchen, um das automatische Fallback für die Ausführung für eine oder beide Aktionen vom Typ „Änderungen anwenden“ zu aktivieren.

  4. Klicken Sie auf OK.

Plattformabhängige Änderungen

Einige Funktionen von „Änderungen anwenden“ hängen von bestimmten Versionen der Android-Plattform ab. Damit diese Änderungen angewendet werden können, muss Ihre App auf einem Gerät bereitgestellt werden, auf dem diese Android-Version (oder höher) ausgeführt wird. Für das Hinzufügen einer Methode ist beispielsweise Android 11 oder höher erforderlich.

Einschränkungen von „Änderungen übernehmen“

„Änderungen übernehmen“ soll die App-Bereitstellung beschleunigen. Es gibt jedoch einige Einschränkungen hinsichtlich der Verwendung.

Codeänderungen, die einen App-Neustart erfordern

Einige Code- und Ressourcenänderungen können erst angewendet werden, wenn die App neu gestartet wird. Dazu gehören:

  • Feld hinzufügen oder entfernen
  • Methode entfernen
  • Methodensignaturen ändern
  • Ändern von Modifizierern von Methoden oder Klassen
  • Klassenvererbung ändern
  • Werte in Enumerationen ändern
  • Ressource hinzufügen oder entfernen
  • App-Manifest ändern
  • Änderung nativer Bibliotheken (SO-Dateien)
Bibliotheken und Plug-ins

Einige Bibliotheken und Plug-ins nehmen automatisch Änderungen an den Manifestdateien Ihrer App oder an Ressourcen vor, auf die im Manifest verwiesen wird. Diese automatischen Aktualisierungen können die Funktion „Änderungen übernehmen“ auf folgende Weise beeinträchtigen:

  • Wenn eine Bibliothek oder ein Plug-in Änderungen am Manifest Ihrer App vornimmt, können Sie „Änderungen anwenden“ nicht verwenden. Sie müssen Ihre App neu starten, damit die Änderungen übernommen werden.
  • Wenn eine Bibliothek oder ein Plug-in Änderungen an den Ressourcendateien Ihrer App vornimmt, können Sie Codeänderungen anwenden Symbol „Codeänderungen anwenden“ nicht verwenden. Sie müssen Änderungen übernehmen und Aktivität neu starten Symbol „Änderungen anwenden und Aktivität neu starten“ verwenden (oder Ihre App neu starten), damit die Änderungen angezeigt werden.

Um diese Einschränkungen zu vermeiden, deaktivieren Sie alle automatischen Updates für Ihre Debug-Build-Varianten.

Bei Firebase Crashlytics werden beispielsweise App-Ressourcen bei jedem Build mit einer eindeutigen Build-ID aktualisiert. Daher können Sie Codeänderungen übernehmen Symbol „Codeänderungen anwenden“ nicht verwenden und müssen die Aktivität Ihrer App neu starten, um die Änderungen zu sehen. Deaktivieren Sie dieses Verhalten, um Codeänderungen anwenden zusammen mit Crashlytics in Ihren Debug-Builds zu verwenden.

Code, der direkt auf Inhalte in einem installierten APK verweist

Wenn Ihr Code direkt auf Inhalte aus dem APK Ihrer App verweist, die auf dem Gerät installiert sind, kann dieser Code nach dem Klicken auf Codeänderungen anwenden Symbol „Codeänderungen anwenden“ zu Abstürzen oder Fehlfunktionen führen. Dieses Verhalten tritt auf, weil beim Klicken auf Codeänderungen anwenden das zugrunde liegende APK auf dem Gerät während der Installation ersetzt wird. Klicken Sie in diesen Fällen stattdessen auf Änderungen anwenden und Aktivität neu starten Symbol „Änderungen anwenden und Aktivität neu starten“ oder Ausführen Symbol „Ausführen“.

Wenn bei der Verwendung von „Änderungen anwenden“ andere Probleme auftreten, melden Sie einen Fehler.

Live Edit

„Live Edit“ ist eine experimentelle Funktion in Android Studio, mit der Sie Composables in Emulatoren und auf physischen Geräten in Echtzeit aktualisieren können. Diese Funktion minimiert Kontextwechsel zwischen dem Schreiben und Erstellen Ihrer App, sodass Sie sich länger auf das Schreiben von Code konzentrieren können, ohne unterbrochen zu werden.

Weitere Informationen zur Live-Bearbeitung

Build-Variante ändern

Standardmäßig erstellt Android Studio die Debug-Version Ihrer App, die nur während der Entwicklung verwendet werden soll, wenn Sie auf Ausführen UI-Schaltfläche klicken.

Wenn Sie die Build-Variante ändern möchten, die Android Studio verwendet, haben Sie folgende Möglichkeiten:

  • Wählen Sie im Menü Build > Build-Variante auswählen aus.
  • Wählen Sie im Menü View > Tool Windows > Build Variants aus.
  • Klicken Sie in der Toolfensterleiste auf den Tab Build-Varianten.

Bei Projekten ohne nativen/C++-Code enthält der Bereich Build-Varianten zwei Spalten: Modul und Aktive Build-Variante. Der Wert Active Build Variant (Aktive Build-Variante) für das Modul bestimmt, welche Build-Variante die IDE auf dem verbundenen Gerät bereitstellt und im Editor angezeigt wird.

Abbildung 9. Das Feld Build-Varianten hat zwei Spalten für Projekte ohne nativen/C++-Code.

Wenn Sie zwischen Varianten wechseln möchten, klicken Sie für ein Modul auf die Zelle Active Build Variant und wählen Sie die gewünschte Variante aus der Liste aus.

Bei Projekten mit nativem/C++-Code enthält der Bereich Build-Varianten drei Spalten:

  • Modul
  • Aktive Build-Variante
  • Aktive ABI

Der Wert Active Build Variant (Aktive Build-Variante) für das Modul bestimmt die Build-Variante, die die IDE auf Ihrem Gerät bereitstellt und die im Editor sichtbar ist. Bei nativen Modulen bestimmt der Wert Aktives ABI das ABI, das vom Editor verwendet wird. Er hat jedoch keine Auswirkungen auf die Bereitstellung.

Abbildung 10. Im Bereich Build-Varianten wird die Spalte Aktive ABI für Projekte mit nativem/C++-Code hinzugefügt.

Wenn Sie die Build-Variante oder ABI ändern möchten, klicken Sie auf die Zelle für die Spalte Aktive Build-Variante oder Aktive ABI und wählen Sie die gewünschte Variante oder ABI aus der Liste aus. Nachdem Sie die Auswahl geändert haben, wird Ihr Projekt automatisch mit der IDE synchronisiert. Wenn Sie eine der Spalten für ein App- oder Bibliotheksmodul ändern, wird die Änderung auf alle abhängigen Zeilen angewendet.

Standardmäßig werden neue Projekte mit zwei Build-Varianten eingerichtet: einer Debug-Variante und einer Release-Variante. Sie müssen die Release-Variante erstellen, um Ihre App für die öffentliche Veröffentlichung vorzubereiten. Wenn Sie andere Varianten Ihrer App mit unterschiedlichen Funktionen oder Geräteanforderungen definieren möchten, können Sie zusätzliche Build-Varianten definieren.

Konflikte im Dialogfeld „Build-Varianten“ von Android Studio

Im Android Studio-Dialogfeld Build Variants (Build-Varianten) werden möglicherweise Fehlermeldungen angezeigt, die auf Konflikte zwischen Build-Varianten hinweisen, z. B.:

Im Fenster „Build-Variante“ werden Fehler aufgrund von Variantenkonflikten angezeigt

Dieser Fehler weist nicht auf ein Build-Problem mit Gradle hin. Das bedeutet, dass die Android Studio IDE Symbole zwischen den Varianten der ausgewählten Module nicht auflösen kann.

Wenn Sie beispielsweise ein Modul M1 haben, das von der Variante v1 des Moduls M2 abhängt, in der IDE aber die Variante v2 von M2 ausgewählt ist, haben Sie nicht aufgelöste Symbole in der IDE. Angenommen, M1 hängt von einer Klasse ab, die nur in v1 verfügbar ist. Wenn v2 ausgewählt ist, ist diese Klasse der IDE nicht bekannt. Daher kann der Klassenname nicht aufgelöst werden und es werden Fehler im Code des M1-Moduls angezeigt.

Diese Fehlermeldungen werden angezeigt, weil die IDE Code für mehrere Varianten nicht gleichzeitig laden kann. In Bezug auf den Build Ihrer App hat die in diesem Dialogfeld ausgewählte Variante jedoch keine Auswirkungen, da Gradle Ihre App mit dem Quellcode erstellt, der in Ihren Gradle-Build-Rezepten angegeben ist, und nicht basierend auf dem, was derzeit in der IDE geladen ist.

Ausführungs-/Fehlerbehebungskonfiguration ändern

Wenn Sie Ihre App zum ersten Mal ausführen, verwendet Android Studio eine Standardkonfiguration für die Ausführung. In der Ausführungskonfiguration wird angegeben, ob Ihre App über ein APK oder ein Android App Bundle bereitgestellt werden soll. Außerdem werden das auszuführende Modul, das bereitzustellende Paket, die zu startende Aktivität, das Zielgerät, die Emulatoreinstellungen und die Logcat-Optionen festgelegt.

Bei der Standardkonfiguration für die Ausführung/Fehlerbehebung wird ein APK erstellt, die Standardprojektaktivität gestartet und das Dialogfeld Select Deployment Target (Bereitstellungsziel auswählen) für die Auswahl des Zielgeräts verwendet. Wenn die Standardeinstellungen nicht zu Ihrem Projekt oder Modul passen, können Sie die Ausführungs-/Debugkonfiguration anpassen oder eine neue auf Projekt-, Standard- und Modulebene erstellen.

Wenn Sie eine Ausführungs-/Fehlerbehebungskonfiguration bearbeiten möchten, wählen Sie Run > Edit Configurations aus. Weitere Informationen finden Sie unter Lauf-/Debugkonfigurationen erstellen und bearbeiten.