配置即时运行后,运行按钮有一个小的黄色霹雳。但是当我运行应用程序时,Android Studio仍然执行了完整的构建&安装,完整的消息列在图片中。
我已经在http://tools.android.com/tech-docs/instant-run搜索了官方文档,但没有任何关于"多个流程"。我想知道"多个流程"意味着编译或我的Android应用程序。
我应该配置什么来关闭多个进程并体验即时运行?
答案 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" ..
但那还不够......试试吼叫。
的build.gradle(APP)
<xsl:when test="$trialSiteName = "Physician's what ever special charactors plainly add Office"">
现在你有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"