2016-06-24 11 views
7

In meiner Android-App bin ich Debuggen Sie es mit Instant Run aktiviert.Android: App stürzt häufig mit sofortiger Ausführung ab

Die App gibt mir sehr häufig unerwartete Fehler, die behoben werden, wenn ich einen sauberen Build erstellt habe.

Für ein Beispiel gibt es manchmal Klasse nicht gefunden Ausnahmen, wo die Klasse tatsächlich da ist. Manchmal gibt es auch Klassenausnahmen, wenn versucht wird, die View, die von findViewById() zurückgegeben wird, auf den Zieltyp zu übertragen (wahrscheinlich hat Android Studio die Element-IDs beim Hot-Deployment der Layouts falsch interpretiert).

Alle diese Fehler werden ohne Codeänderung gelöst, nur durch einen vollständigen Build. Instant-Run hat den Build-Prozess für mich zwei- oder dreimal langsamer gemacht.

Warum bekomme ich diese Fehler? Weiß jemand, wie man sofort richtig funktioniert?

+0

Ich hatte das gleiche Problem, machen Sie stattdessen einen vollständigen Build, wenn Sie es auf einem anderen Gerät, Ihrem Emulator oder dem Gerät testen möchten. –

+0

Verwenden Sie Ausnahmebehandlungscode (try/catch blocks) entsprechend .try/catch Blöcke um Code, der möglicherweise eine Ausnahme generieren kann, und verwenden Sie einen finally Block, um Ressourcen zu bereinigen, falls erforderlich. – Developer

+0

dann, wie können wir sofort run @ karanvs nutzen – Killer

Antwort

5

Sie sind nicht der einzige. Instant Run ist derzeit wenig stabil, oder wir können sagen, unzuverlässig.

Instant Run hat mehrere Swap-Schritte wie this document describes. In Ihrem Fall konnte Instant Run Ihre Änderungen nicht gut erkennen, ebenso wenig einen Warm-Swap, selbst wenn ein Cold-Swap erforderlich war, und so weiter.

Instant Run ist nützlich, wenn kleinere GUI-Platzierung editieren, ich möchte sagen, es ist das einzige nützliche Szenario derzeit, so empfehle ich Ihnen, es während der allgemeinen Entwicklung auszuschalten. Sie können es deaktivieren, indem Sie das Kontrollkästchen Settings > Build, Execution, Deployment > Enable Instant Run to hot swap... deaktivieren.

Wenn Sie denken, Instant Run ist schick und wollen es immer noch verwenden, werden Sie wahrscheinlich ein solches Problem oft konfrontiert werden. Um das zu tun, baue alles einfach so auf, wie du es erlebt hast. Das ist alles, was wir jetzt tun können.

1

Dies ist Dokument über Instant-Run:

  1. Android Studio setzt nun sauber baut schneller als je zuvor. Darüber hinaus ist das Drücken von inkrementellen Codeänderungen auf den Emulator oder ein physisches Gerät jetzt fast augenblicklich. Überprüfen Sie Ihre Aktualisierungen , ohne einen neuen Debug-Build neu zu implementieren oder in vielen Fällen ohne die App neu zu starten.
  2. Instant-Run unterstützt bis zu einer laufenden App die folgenden Änderungen drängen:
    • Änderungen an der Umsetzung eines bestehenden Instanzmethode oder statische Methode
    • Änderungen an einer bestehenden App Ressource
    • Änderungen an Struktur Code, wie als Methodensignatur oder als statisches Feld (erfordert ein Zielgerät, auf dem die API-Stufe 21 oder höher ausgeführt wird).

Ich denke also, wenn Sie neue Klasse hinzufügen oder neue view_id hinzuzufügen, müssen Sie reinigen - Ihr Projekt neu. Das ist nur meine Meinung, korrigiere mich, wenn ich falsch liege. More info about Instant Run

3

Instant Run ist immer noch voller Bugs.Sogar Google sagt das:

Instant Run wurde entwickelt, um den Build- und Deploy-Prozess in meisten Situationen zu beschleunigen. Es gibt jedoch einige Aspekte bei der Verwendung von Instant Run , die sich auf das Verhalten und die Kompatibilität Ihrer App auswirken können. Wenn Sie Erfahrung andere Probleme während Instant-Run sein, bitte file a bug

Es einige dex-Dateien in unserer App hinzufügen, die Build zu beschleunigen und Verfahren einzusetzen. Manchmal, wenn Sie ein Layout ändern, dann Build and Run das Projekt, es zeigt immer noch das alte Layout. Selbst die von ihm produzierte Apk wird auf einigen Geräten nicht funktionieren.

Vorerst besser, wenn wir sie ausschalten:

Instant-Run deaktivieren:

  1. Öffnen Sie die Einstellungen oder Voreinstellungen.
  2. Navigieren Sie zu Build, Ausführung, Bereitstellung> Instant Run.
  3. Deaktivieren Sie das Kontrollkästchen neben Instant Run aktivieren.
0

Wenn ich die AndroidManifest.xml Datei zu ändern, führt Android Studio eine vollständige bauen, aber das ist viel schneller Reinigung zur Faust, und dann das Projekt zu bauen.

Also, ich füge eine leere Zeile in die Manifest-Datei, wann immer ich Android Studio, um das Projekt zu bauen. Dies ist sehr effektiv, um einen manuellen vollständigen Build durchzuführen.