2016-02-28 4 views
9

Nach dem Konfigurieren Instant-Run hat die Run-Taste einen kleinen gelben Donnerbolzen.Aber während ich die App ausführen, führte Android Studio noch eine vollständige Build & Installation, vollständige Nachricht ist im Bild aufgeführt.Sofortiger Lauf funktioniert nicht wegen "multiple Prozess"

Ich habe die offiziellen Dokumente in http://tools.android.com/tech-docs/instant-run gesucht, aber es gab nichts über "mehrere Prozesse". Ich frage mich, "mehrere Prozesse" bedeutet kompilieren oder meine Android-App.

Was muss ich konfigurieren, um mehrere Prozesse zu deaktivieren und sofort ausgeführt zu werden?

Antwort

9

Instant-Run ist für Ihre App nicht aktiviert, da es mehrere Prozesse verwendet.

Wie im Android Tools Projekt-Site angegeben (http://tools.android.com/recent/androidstudio20beta6availableinthecanarychannel):

„Apps, die mehrere Prozesse verwendet wurden (via Android: Prozess im Manifest). Wurden mit Instant-Run nicht korrekt aktualisiert werden Für den Augenblick, Wir haben Instant Run in einem solchen Szenario deaktiviert. "

Um sofortige Ausführung zu erleben, müssen Sie daher sicherstellen, dass Ihre App nicht mehrere Prozesse verwendet. Überprüfen Sie Ihre AndroidManifest.xml dafür.

Es kann sein, dass die Verwendung mehrerer Prozesse von einer importierten Bibliothek stammt. LeakCanary zum Beispiel verwendet mehrere Prozesse, die in seiner eigenen AndroidManifest.xml definiert sind. Der beste Weg, um herauszufinden, wo dies definiert ist, ist das Durchsuchen Ihres gesamten Projekts (Cmd-Shift-F in Android Studio unter OS X) nach "android: process".

+3

Ich brauchte LeakCanary und ProcessPhoenix von meiner App zu entfernen, dies zu umgehen . Das waren die Täter. Es ist auch erwähnenswert, dass mir gesagt wurde, dass dies behoben ist und in AS 2.0.0-beta7 veröffentlicht werden wird. – loeschg

+0

Gute Arbeit! Danke für das Update, wird gut, wenn das in der nächsten Version behoben wird. – Jannik

+0

Tut mir leid, hier zu spät zu sein. Meine spätere Schlussfolgerung ist dieselbe wie deine Antwort. Danke ~ – futureer

3

Ich lief dieses Problem beim Ausführen von ProcessPhoenix. Anstatt es vollständig zu deaktivieren, habe ich es nur für meinen Debug-Build deaktiviert.

Statt compile Ich benutze
releaseCompile 'com.jakewharton:process-phoenix:2.0.0'

Und nicht brechen die Build-I Reflexion verwenden Sie den Bewerbungsprozess Neustart auslösen:

try { 
    Class clazz = Class.forName("com.jakewharton.processphoenix.ProcessPhoenix"); 
    Method triggerRebirthMethod = clazz.getMethod("triggerRebirth", Context.class); 
    triggerRebirthMethod.invoke(this, new Object[]{getActivity()}); 
} catch (Exception e) { 
    // Exception handling 
} 

So, jetzt kann ich noch Instant-Run verwenden und halten die lib enthalten. :)

(Natürlich ist die Reflexion nie ideal, aber der App Prozess Neustart in einem seltenen Fall in der App nur verwendet.)