由于"多个流程"即时运行不起作用

时间:2016-02-28 08:23:43

标签: android android-studio instant-run

配置即时运行后,运行按钮有一个小的黄色霹雳。但是当我运行应用程序时,Android Studio仍然执行了完整的构建&安装,完整的消息列在图片中。

我已经在http://tools.android.com/tech-docs/instant-run搜索了官方文档,但没有任何关于"多个流程"。我想知道"多个流程"意味着编译或我的Android应用程序。

我应该配置什么来关闭多个进程并体验即时运行?

3 个答案:

答案 0 :(得分:9)

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

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

“使用多个进程的应用程序(通过清单中的android:进程)没有使用Instant Run正确更新。暂时,我们在这种情况下关闭了Instant Run。”

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

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

答案 1 :(得分:7)

运行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
}

所以现在我仍然可以使用Instant Run并保持包含lib。 :)

(当然,反射从来都不是理想的,但应用程序进程重启仅在应用程序中的一个罕见的特殊情况下使用。)

答案 2 :(得分:1)

我尝试了很多......快速解决方案是在开发时删除 android:process =":remote" ..

但那还不够......试试吼叫。

  1. 使用Flavors。

  2. 的build.gradle(APP)

    <xsl:when test="$trialSiteName = &quot;Physician's what ever special charactors plainly add Office&quot;">
    


    现在你有4个Build Variants
    =&gt; developmentDebug,developmentRelease,productionDebug,productionRelease



    developmentDebug,developmentRelease
    =&gt;不使用多道工序

    productionDebug,productionRelease
    =&gt;使用多流程



    2.复制原始&#34; AndroidManifest.xml&#34;到YouAppRoot \ app \ src \ production,然后删除除&& 39; service&#39;之外的所有元素。

    buildTypes {
        debug {   
            minifyEnabled false
            signingConfig signingConfigs.debug
        }
    
        release {
            minifyEnabled true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
        development {
            minSdkVersion 21
        }
        production {
            minSdkVersion 14
        } 
    }
    flavorDimensions "default"
    

    1. 删除android:process =&#34;:remote&#34;原始AndroidManifest.xml中的行

    2. 现在您可以查看以下内容。
    3. enter image description here