Wenn Sie sehen möchten, wie Ihre App auf einem Gerät aussieht und funktioniert, müssen Sie sie erstellen und ausführen. In Android Studio werden neue Projekte eingerichtet, sodass Sie Ihre App mit nur wenigen Klicks auf einem virtuellen oder physischen Gerät bereitstellen können.
In dieser Übersicht wird beschrieben, wie du Android Studio zum Erstellen und Ausführen deiner App für Tests und Fehlerbehebungen verwendest. Informationen zur Verwendung von Android Studio zum Erstellen Ihrer App, damit sie für Nutzer veröffentlicht werden kann, finden Sie unter App für Nutzer veröffentlichen. Weitere Informationen zum Verwalten und Anpassen Ihres Builds mit oder ohne Android Studio finden Sie unter Build konfigurieren.
Einfache Erstellung und Ausführung
So erstellen Sie Ihre App und führen sie aus:
- Wählen Sie in der Symbolleiste im Menü „Ausführungskonfigurationen“ Ihre Anwendung aus.
Wählen Sie im Menü des Zielgeräts das Gerät aus, auf dem Sie die App ausführen möchten.
Wenn Sie keine Geräte konfiguriert haben, müssen Sie entweder ein virtuelles Android-Gerät erstellen, um den Android-Emulator zu verwenden, oder ein physisches Gerät verbinden.
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. Symbole und stilistische Änderungen unterscheiden zwischen Fehlern (Geräteauswahl, die zu einer fehlerhaften Konfiguration führen) und Warnungen (Geräteauswahl, die zu unerwartetem Verhalten führen kann, aber weiterhin ausgeführt werden kann).
Build-Prozess überwachen
Wenn Sie Details zum Build-Prozess aufrufen möchten, wählen Sie View > Tool Windows > Build (Ansicht > Toolfenster > Build) aus oder klicken Sie in der Symbolleiste des Fensters auf Build . Im Fenster Build werden die Aufgaben angezeigt, die Gradle zum Erstellen Ihrer App ausführt (siehe Abbildung 1).
- Tab „Synchronisieren“: Hier werden Aufgaben angezeigt, die Gradle zur Synchronisierung mit Ihren Projektdateien ausführt. Ähnlich wie auf dem Tab Build-Ausgabe wählen Sie bei einem Synchronisierungsfehler Elemente in der Baumstruktur aus, um weitere Informationen zum Fehler zu erhalten. Zeigt außerdem eine Zusammenfassung der Auswirkungen von Downloads an, um festzustellen, ob sich Abhängigkeitsdownloads sich negativ auf Ihren Build auswirken.
- Tab "Build-Ausgabe": Zeigt die Aufgaben an, die Gradle als Baum ausführt, wobei jeder Knoten entweder eine Build-Phase oder eine Gruppe von Aufgabenabhängigkeiten darstellt. Wenn Sie Fehler bei der Build- oder Kompilierungszeit erhalten, prüfen Sie den Baum und wählen Sie ein Element aus, um die Fehlerausgabe zu lesen (siehe Abbildung 2).
- Tab „Build Analyzer“:Liefert Informationen zur Analyse der Build-Leistung zu Ihrem Build. Weitere Informationen finden Sie unter Build-Leistung mit Build Analyzer beheben.
- Neu starten: Die letzte Build-Aktion wird noch einmal ausgeführt. Wenn Sie zuletzt Erstellen > Ausgewähltes Modul erstellen ausgeführt haben, wird das aktuelle Modul erstellt. Wenn Sie zuletzt Build > Make Project (Erstellen > Projekt erstellen) ausgeführt haben, werden für alle Module in Ihrem Projekt Zwischen-Build-Dateien generiert.
- Filter:Damit 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 zum Erstellen dieser Produktvarianten auf. Um die Liste aller verfügbaren Build-Aufgaben aufzurufen, klicken Sie auf View > Tool Windows > Gradle (Ansicht > Tool-Fenster > Gradle) oder in der Symbolleiste des Fensters auf Gradle .
Wenn während des Build-Prozesses ein Fehler auftritt, empfehlen Gradle möglicherweise Befehlszeilenoptionen wie --stacktrace
oder --debug
, um das Problem zu beheben. So verwenden Sie Befehlszeilenoptionen in Ihrem Build-Prozess:
- Öffnen Sie das Dialogfeld Einstellungen oder Einstellungen:
- Unter Windows oder Linux wählen Sie in der Menüleiste Datei > Einstellungen aus.
- Unter macOS wählen Sie in der Menüleiste Android Studio > Einstellungen aus.
- Gehen Sie zu Build, Ausführung, Bereitstellung > Compiler.
- Geben Sie im Textfeld neben Befehlszeilenoptionen Ihre Befehlszeilenoptionen ein.
- Klicke zum Speichern und Beenden auf OK.
Gradle wendet diese Befehlszeilenoptionen an, wenn Sie das nächste Mal versuchen, Ihre App zu erstellen.
Erweiterte Build- und Ausführungsfeatures
Die Standardmethode zum Erstellen und Ausführen Ihrer App in Android Studio sollte zum Testen einer einfachen App ausreichen. Sie können diese Build- und Ausführungsfunktionen aber auch für komplexere Anwendungsfälle verwenden:
Klicken Sie auf Fehlerbehebung , um die Anwendung im Debug-Modus bereitzustellen. Wenn Sie die Anwendung im Debug-Modus ausführen, können Sie Haltepunkte im Code festlegen, Variablen untersuchen, Ausdrücke zur Laufzeit auswerten und Debugging-Tools ausführen. Weitere Informationen finden Sie unter App-Fehler beheben.
Wenn Sie eine größere, komplexere Anwendung haben, verwenden Sie "Änderungen anwenden", anstatt auf Ausführen zu klicken. Das spart Zeit, da Sie nicht jedes Mal neu starten müssen, wenn Sie eine Änderung bereitstellen möchten. Weitere Informationen zum Übernehmen von Änderungen finden Sie im Abschnitt Mit Änderungen anwenden inkrementell bereitstellen.
Wenn Sie Jetpack Compose verwenden, ist die Live-Bearbeitung eine experimentelle Funktion, mit der Sie zusammensetzbare Funktionen in Echtzeit aktualisieren können, ohne noch einmal auf Ausführen klicken zu müssen. So können Sie sich mit minimaler Unterbrechung auf das Schreiben von UI-Code konzentrieren. Weitere Informationen findest du im Abschnitt Live-Bearbeitung (experimentell).
Wenn Sie eine App mit mehreren Build-Varianten oder -Versionen haben, können Sie im Fenster Build-Varianten auswählen, welche Build-Variante bereitgestellt werden soll. Weitere Informationen zum Ausführen einer bestimmten Build-Variante finden Sie im Abschnitt Build-Variante ändern.
Sie können die Ausführungs-/Debug-Konfiguration ändern, um die Optionen für Installation, Start und Test von Anwendungen zu optimieren. Weitere Informationen zum Erstellen benutzerdefinierter Ausführungs-/Fehlerbehebungskonfigurationen finden Sie im Abschnitt Ausführungs-/Fehlerbehebungskonfigurationen 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 Anwendung über die Befehlszeile erstellen.
Mit „Änderungen übernehmen“ inkrementell bereitstellen
In Android Studio 3.5 und höher können Sie mit „Änderungen übernehmen“ Code- und Ressourcenänderungen an Ihre laufende App übertragen, ohne die App neu zu starten. In einigen Fällen, ohne die aktuelle Aktivität neu zu starten. Mit dieser Flexibilität kannst du steuern, in welchem Umfang deine App neu gestartet wird, wenn du kleine, inkrementelle Änderungen bereitstellen und testen möchtest, während der aktuelle Status deines Geräts beibehalten werden soll.
"Änderungen übernehmen" 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 zum Übernehmen von Änderungen finden Sie unter Android Studio-Projekt: Marble: Änderungen anwenden.
Voraussetzungen
Die Aktion „Änderungen übernehmen“ ist nur verfügbar, wenn die folgenden Bedingungen erfüllt sind:
- Sie erstellen das APK Ihrer App mit einer Debug-Build-Variante.
- Die App wird auf einem Zielgerät oder einem Emulator bereitgestellt, auf dem Android 8.0 (API-Level 26) oder höher ausgeführt wird.
Option „Änderungen übernehmen“ verwenden
Verwende die folgenden Optionen, wenn du deine Änderungen auf einem kompatiblen Gerät bereitstellen möchtest:
Änderungen übernehmen und Aktivität neu starten : Es wird versucht, sowohl Ihre Ressourcen- als auch Ihre Codeänderungen durch einen Neustart der Aktivität anzuwenden. Es wird jedoch nicht versucht, die Anwendung neu zu starten. Im Allgemeinen können Sie diese Option verwenden, wenn Sie Code im Text einer Methode oder eine vorhandene Ressource geändert haben.
Sie können diese Aktion auch durch Drücken von Strg + Alt + F10 (Strg + Befehlstaste + Umschalt + R unter macOS) ausführen.
Codeänderungen anwenden : Es wird versucht, nur Ihre Codeänderungen zu übernehmen, ohne einen Neustart durchzuführen. Im Allgemeinen können Sie diese Option verwenden, wenn Sie Code im Text einer Methode geändert, aber keine Ressourcen geändert haben. Wenn Sie sowohl Code als auch Ressourcen geändert haben, verwenden Sie stattdessen Änderungen anwenden und Aktivität neu starten.
Sie können diese Aktion auch durch Drücken von Strg + F10 (Strg + Befehlstaste + R unter macOS) ausführen.
Ausführen : Alle Änderungen werden bereitgestellt und die Anwendung neu gestartet. Verwenden Sie diese Option, wenn die vorgenommenen Änderungen keine der Optionen „Änderungen übernehmen“ verwenden können. Weitere Informationen zu den Arten von Änderungen, die einen Neustart der Anwendung erfordern, finden Sie im Abschnitt Einschränkungen beim Anwenden von Änderungen.
Ausführungs-Fallback für „Änderungen übernehmen“ aktivieren
Wenn Sie auf Änderungen übernehmen und Aktivität neu starten oder Codeänderungen anwenden klicken, erstellt Android Studio ein neues APK und ermittelt, ob die Änderungen angewendet werden können. Wenn die Änderungen nicht übernommen werden können und dazu führen, dass „Änderungen übernehmen“ fehlschlägt, werden Sie von Android Studio aufgefordert, die App noch einmal auszuführen .
Wenn du nicht jedes Mal eine Aufforderung erhalten möchtest, kannst du Android Studio so konfigurieren, dass deine App automatisch neu ausgeführt wird, wenn Änderungen nicht übernommen werden können. So aktivieren Sie dieses Verhalten:
Öffnen Sie das Dialogfeld Einstellungen oder Einstellungen:
- Unter Windows oder Linux wählen Sie im Menü File > Settings (Datei > Einstellungen) aus.
- Unter macOS wählen Sie Android Studio > Einstellungen aus dem Menü aus.
Gehen Sie zu Build, Ausführung, Bereitstellung > Bereitstellung.
Klicken Sie die Kästchen an, um das automatische Ausführungs-Fallback für eine oder beide Aktionen vom Typ „Änderungen übernehmen“ zu aktivieren.
Klicke auf OK.
Plattformabhängige Änderungen
Einige Funktionen von „Änderungen übernehmen“ hängen von bestimmten Versionen der Android-Plattform ab. Damit diese Änderungen angewendet werden können, muss Ihre App auf einem Gerät mit dieser Android-Version (oder höher) bereitgestellt werden. Zum Hinzufügen einer Methode ist beispielsweise Android 11 oder höher erforderlich.
Einschränkungen beim Übernehmen von Änderungen
Mit „Änderungen übernehmen“ wird die Anwendungsbereitstellung beschleunigt. Es gibt jedoch einige Einschränkungen, wann sie verwendet werden können.
Codeänderungen, die einen App-Neustart erfordern
Einige Code- und Ressourcenänderungen können erst angewendet werden, wenn die Anwendung neu gestartet wurde. Dazu gehören:
- Feld hinzufügen oder entfernen
- Methode entfernen
- Methodensignaturen ändern
- Modifikatoren von Methoden oder Klassen ändern
- Klassenübernahme ändern
- Werte in Enums ändern
- Ressource hinzufügen oder entfernen
- App-Manifest ändern
- Native Bibliotheken (SO-Dateien) ändern
Bibliotheken und Plug-ins
Einige Bibliotheken und Plug-ins nehmen automatisch Änderungen an den Manifestdateien Ihrer Anwendung oder an Ressourcen vor, auf die im Manifest verwiesen wird. Diese automatischen Updates 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 übernehmen“ nicht verwenden. Du musst deine App neu starten, um die Änderungen zu sehen.
- Wenn eine Bibliothek oder ein Plug-in Änderungen an den Ressourcendateien Ihrer Anwendung vornimmt, können Sie Codeänderungen anwenden nicht verwenden. Sie müssen Änderungen übernehmen und Aktivität neu starten verwenden (oder Ihre App neu starten), um Ihre Änderungen zu sehen.
Deaktivieren Sie alle automatischen Updates für Ihre Build-Varianten zur Fehlerbehebung, um diese Einschränkungen zu vermeiden.
Firebase Crashlytics aktualisiert App-Ressourcen beispielsweise bei jedem Build mit einer eindeutigen Build-ID. Dadurch wird verhindert, dass Sie Codeänderungen anwenden verwenden, und Sie müssen die App-Aktivität neu starten, um Ihre Änderungen zu sehen. Deaktivieren Sie dieses Verhalten, um Codeänderungen anwenden neben Crashlytics mit Ihren zu debuggenden Builds zu verwenden.
Code, der direkt auf Inhalte in einem installierten APK verweist
Wenn dein Code direkt auf Inhalte aus dem APK deiner App verweist, das auf dem Gerät installiert ist, kann dieser Code nach dem Klicken auf Codeänderungen anwenden zu Abstürzen oder unerwünschtem Verhalten führen. Dieses Verhalten tritt auf, weil das zugrunde liegende APK auf dem Gerät während der Installation ersetzt wird, wenn Sie auf Codeänderungen anwenden klicken. In diesen Fällen können Sie stattdessen auf Änderungen anwenden und Aktivität neu starten oder Ausführen klicken.
Wenn bei der Verwendung von „Änderungen übernehmen“ andere Probleme auftreten, melden Sie den Fehler.
Live-Bearbeitung
Live Edit ist eine experimentelle Funktion in Android Studio, mit der Sie zusammensetzbare Funktionen in Emulatoren und physischen Geräten in Echtzeit aktualisieren können. Diese Funktion minimiert Kontextwechsel zwischen dem Schreiben und dem Erstellen der Anwendung, sodass Sie sich ohne Unterbrechung länger auf das Schreiben von Code konzentrieren können.
Weitere Informationen zu Live Edit
Build-Variante ändern
Standardmäßig erstellt Android Studio die Debug-Version Ihrer App, die nur während der Entwicklung verwendet wird, wenn Sie auf Ausführen klicken.
Sie haben folgende Möglichkeiten, die von Android Studio verwendete Build-Variante zu ändern:
- Wählen Sie im Menü Build > Build-Variante auswählen aus.
- Wählen Sie im Menü Ansicht > Toolfenster > Varianten erstellen aus.
- Klicken Sie in der Leiste des Toolfensters auf den Tab Varianten erstellen.
Bei Projekten ohne nativen/C++-Code enthält der Bereich Build-Varianten zwei Spalten: Modul und Aktive Build-Variante. Der Wert Aktive Build-Variante für das Modul bestimmt, welche Build-Variante die IDE auf Ihrem verbundenen Gerät bereitstellt. Er wird im Editor angezeigt.
Wenn Sie zwischen Varianten wechseln möchten, klicken Sie bei einem Modul auf die Zelle Aktive Build-Variante und wählen Sie die gewünschte Variante aus der Liste aus.
Bei Projekten mit nativem/C++-Code enthält der Bereich Build Variants (Varianten erstellen) drei Spalten:
- Modul
- Aktive Build-Variante
- Aktives ABI
Der Wert Aktive Build-Variante für das Modul bestimmt die Build-Variante, die von der IDE auf Ihrem Gerät bereitgestellt wird. Er ist im Editor sichtbar. Bei nativen Modulen bestimmt der Wert Active ABI (Aktives ABI) die vom Editor verwendete ABI, hat aber keinen Einfluss darauf, was bereitgestellt wird.
Wenn Sie die Build-Variante oder ABI ändern möchten, klicken Sie auf die Zelle in der 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, synchronisiert die IDE Ihr Projekt automatisch. Wenn Sie eine der Spalten für eine Anwendung oder ein 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 den öffentlichen Release vorzubereiten. Wenn Sie andere Varianten Ihrer App mit anderen Funktionen oder Geräteanforderungen definieren möchten, können Sie zusätzliche Build-Varianten definieren.
Konflikte im Dialogfeld „Build-Varianten“ in Android Studio
Im Dialogfeld Build-Varianten in Android Studio werden möglicherweise Fehlermeldungen angezeigt, die auf Konflikte zwischen Build-Varianten hinweisen. Beispiele:
Dieser Fehler weist nicht auf ein Build-Problem mit Gradle hin. Das weist darauf hin, dass die Android Studio-IDE keine Symbole zwischen den Varianten der ausgewählten Module auflösen kann.
Wenn Sie beispielsweise ein Modul M1
haben, das von der Variante v1
des Moduls M2
abhängt, aber für M2
die Variante v2
in der IDE ausgewählt ist, gibt es in der IDE unaufgelöste Symbole. Angenommen, M1
hängt von einer Klasse ab, die nur in v1
verfügbar ist. Wenn v2
ausgewählt wird, ist diese Klasse der IDE nicht bekannt. Daher kann der Klassenname nicht aufgelöst werden und es werden Fehler im Code des Moduls M1
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-Schemas angegeben ist, und nicht auf Grundlage des aktuell in der IDE geladenen Inhalts.
Ausführungs-/Fehlerbehebungskonfiguration ändern
Wenn Sie Ihre App zum ersten Mal ausführen, verwendet Android Studio eine Standardkonfiguration für die Ausführung. Die Ausführungskonfiguration gibt an, ob Ihre App über ein APK oder Android App Bundle bereitgestellt werden soll, sowie das auszuführende Modul, das bereitzustellende Paket, die Startaktivität, das Zielgerät, die Emulatoreinstellungen, Logcat-Optionen usw.
Mit der Standardkonfiguration zum Ausführen/Debuggen wird ein APK erstellt, die Standardprojektaktivität gestartet und das Dialogfeld Bereitstellungsziel auswählen zur Auswahl des Zielgeräts verwendet. Wenn die Standardeinstellungen nicht zu Ihrem Projekt oder Modul passen, können Sie die Ausführungs-/Fehlerbehebungskonfiguration anpassen oder eine neue Konfiguration auf Projekt-, Standard- und Modulebene erstellen.
Wählen Sie zum Bearbeiten einer Ausführungs-/Fehlerbehebungskonfiguration Ausführen > Konfigurationen bearbeiten aus. Weitere Informationen finden Sie unter Ausführungs-/Fehlerbehebungskonfigurationen erstellen und bearbeiten.