即时运行由于“多个进程”而不起作用

configuration即时运行后,运行button有一个小的黄色雷电。但是,当我运行应用程序,Android Studio仍然执行完整的build立和安装,完整的消息在图片中列出。

我已经在http://tools.android.com/tech-docs/instant-runsearch官方文档,但没有任何关于“多进程”。我想知道“多进程”意味着编译或我的android应用程序。

我应该configuration什么来closures多个进程并体验即时运行?

即时运行未启用您的应用程序,因为它使用多个进程。

正如在Android工具项目网站( http://tools.android.com/recent/androidstudio20beta6availableinthecanarychannel )所述:

“使用多个进程的应用程序(通过清单中的android:进程)在Instant Run中没有得到正确的更新。目前,我们已经在这种情况下closures了Instant Run。

因此,要体验即时运行,您必须确保您的应用程序不使用多个进程。 检查你的AndroidManifest.xml。

这可能是多个进程的使用来自一个导入的库。 例如,LeakCanary使用在自己的AndroidManifest.xml中定义的多个进程。 find定义的最好方法是search整个项目(OS X上的Android Studio中的Cmd-Shift-F)“android:process”。

运行ProcessPhoenix时遇到了这个问题。 而不是完全禁用它,我只是禁用它为我的debugging版本。

而不是我使用的compile
releaseCompile 'com.jakewharton:process-phoenix:2.0.0'

为了不打破构build我使用reflection来触发应用程序进程重新启动:

 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包含在内。 🙂

(当然,reflection从来都不是理想的,但应用程序重启只能在应用程序中的一个罕见的情况下使用)。