2016-02-28 10 views
9

インスタント実行を設定した後、実行ボタンは黄色い雷雲です。しかし、私はアプリを実行中、Androidスタジオはまだ完全なビルドを行った&写真に記載されています。インスタント実行は "複数のプロセス"のために動作しません

私はhttp://tools.android.com/tech-docs/instant-runの公式文書を検索しましたが、 "マルチプロセス"については何もありませんでした。 "複数のプロセス"とは、コンパイルやAndroidアプリケーションを意味します。

複数のプロセスをオフにしてインスタント実行を実行するにはどうすればよいですか?それは複数のプロセスを使用しているため

答えて

9

インスタントランは、アプリの有効化されていません。

のAndroidツールプロジェクトサイト(http://tools.android.com/recent/androidstudio20beta6availableinthecanarychannel)上に述べたように:複数のプロセスを使用していた

「アプリ(アンドロイド経由:マニフェストの処理は)インスタントランで正常に更新されていなかった当分のために、。私たちはそのようなシナリオでインスタント・ランをオフにしました。

したがって、インスタント・ランを体験するには、アプリが複数のプロセスを使用していないことを確認する必要があります。 AndroidManifest.xmlでこれを確認してください。

複数のプロセスの使用がインポートされたライブラリに由来している可能性があります。たとえば、LeakCanaryは、独自のAndroidManifest.xmlで定義された複数のプロセスを使用します。これが定義されている場所を見つける最も良い方法は、 "android:process"のプロジェクト全体(OS XのAndroid StudioのCmd-Shift-F)を検索することです。

+3

私はこれを回避するために私のアプリからLeakCanaryとProcessPhoenixを除去するために必要。それらは犯人でした。また、これが修正され、AS 2.0.0-beta7でリリースされると言われたことは注目に値する。 – loeschg

+0

良い仕事!更新をお寄せいただきありがとうございます。これが次のリリースで修正される場合は、うまくいくでしょう。 – Jannik

+0

ここに遅れて申し訳ありません。後の結論はあなたの答えと同じです。ありがとう〜 – futureer

3

ProcessPhoenixを実行しているときにこの問題が発生しました。完全に無効にする代わりに、デバッグビルドのために無効にしました。

代わりのcompile私は
releaseCompile 'com.jakewharton:process-phoenix:2.0.0'

そして、私は、アプリケーションプロセスの再起動をトリガーするためにリフレクションを使用したビルド壊さないために使用します。だから今、私はまだインスタント実行]を使用して維持することができます

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 
} 

をlibが含まれています。 :)

(もちろん、反射が理想的なことはありませんが、アプリのプロセスの再起動が唯一のアプリケーション内の1つのまれな特定のケースで使用されている。)

関連する問題