2016-02-28 11 views
9

Po skonfigurowaniu natychmiastowego uruchomienia przycisk uruchamiania ma małą żółtą błyskawicę. Jednak podczas uruchamiania aplikacji Android Studio nadal wykonuje pełną instalację &, pełna wiadomość jest wymienione na zdjęciu.Natychmiastowe uruchamianie nie działa z powodu "wielokrotnego przetwarzania"

Przeszukałem oficjalne dokumenty w http://tools.android.com/tech-docs/instant-run, ale nie było nic o "procesie wielokrotnym". Zastanawiam się, "wiele procesów" oznacza kompilację lub moją aplikację na Androida.

Co należy skonfigurować, aby wyłączyć wiele procesów i uzyskać natychmiastowy przebieg?

Odpowiedz

9

Natychmiastowa Run nie jest włączona dla aplikacji, ponieważ jest za pomocą wielu procesów.

Jak stwierdzono na narzędziach Android Stronie Projektu (http://tools.android.com/recent/androidstudio20beta6availableinthecanarychannel):

„Aplikacje, które zostały za pomocą wielu procesów (przez Androida: proces w manifeście). Nie były właściwie zaktualizowanego z Instant Run Na razie, w takim scenariuszu wyłączyliśmy Instant Run ".

W związku z tym, aby doświadczyć natychmiastowego uruchomienia, należy się upewnić, że aplikacja nie korzysta z wielu procesów. Sprawdź swój AndroidManifest.xml.

Możliwe, że wielokrotne użycie procesu pochodzi z importowanej biblioteki. Na przykład LeakCanary wykorzystuje wiele procesów zdefiniowanych we własnym AndroidManifest.xml. Najlepszym sposobem znalezienia tego miejsca jest przeszukanie całego projektu (Cmd-Shift-F w Android Studio na OS X) dla "android: process".

+3

Musiałem usunąć LeakCanary i ProcessPhoenix z mojej aplikacji, aby ominąć ten . To byli winowajcy. Warto również zauważyć, że powiedziano mi, że to naprawiono i zostanie wydany w wersji 2.0.0-beta7. – loeschg

+0

Dobra robota! Dzięki za aktualizację, będzie dobrze, jeśli zostanie to naprawione w następnym wydaniu. – Jannik

+0

Przepraszam za spóźnienie. Mój późniejszy wniosek jest taki sam jak twoja odpowiedź. Dzięki ~ – futureer

3

Wpadłem na ten problem podczas uruchamiania ProcessPhoenix. Zamiast wyłączać go całkowicie, po prostu wyłączyłem go dla mojej wersji debugowania.

Zamiast compile używam
releaseCompile 'com.jakewharton:process-phoenix:2.0.0'

I żeby nie złamać kompilacji używam odbicie wywołać ponowne uruchomienie procesu aplikacji:

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 
} 

Więc teraz mogę nadal używać Natychmiastowy Uruchom i zachować lib włączone. :)

(Oczywiście, odbicie nie jest idealna, ale restart proces aplikacji jest używany tylko w jednym konkretnym przypadku rzadkich w aplikacji).

Powiązane problemy