Android即时运行缓慢构build

我一直听到即时运行的讨论,就好像它处于一个很好的状态,但是我的团队和我经常遇到关于这个function的重大问题,并因此而降低了编码体验。

在即时运行之前,我们的干净版本是〜1分30秒,之后我们会得到〜25秒或偶尔的40秒的版本。 虽然即时运行似乎确实有时会将构build时间减less到6-12秒,而其他时间则会让我们进入我们已经看到的疯狂的长时间构build,只要13分钟,这在很大程度上抵消了渐进式编译的收益。

也似乎大部分时间,小小的变化仍然需要40秒。 有时候是6秒钟,但这很less见。

感觉很像即时运行降低了我们一贯高效工作的能力。 以下是我们的一些特定于应用的configuration:

Android Studio 2.1.1,Android插件2.1

multiDexEnabled true dexOptions { preDexLibraries true javaMaxHeapSize "4g" maxProcessCount 4 incremental true dexInProcess true } org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Xmx6g -XX:MaxPermSize=512m 

我们做错了什么,还是有人find工作?

编辑 :几个开发者似乎遇到这一点。 我在这里跟踪一个错误。 随意挑选它并添加到讨论中。

Solutions Collecting From Web of "Android即时运行缓慢构build"

现在即时运行我们获得了更好的性能。 以下是我们所做的更改:

  1. 我们发现Lombok在守护进程中正在造成内存泄漏。 我们发现了内存泄漏,因为使用了一个刚刚变暖的守护进程,我们的构build需要花费大约15秒,但是经过一个小时的修改之后,我们的构build开始花费1分钟进行最简单的修改。 我们发现,从龙目岛迁移我们的应用程序修复了内存泄漏。
  2. 我们停止使用即时运行热点和热点代码交换。 我们发现这些常常会导致错误或问题,更不用说您需要注意您是否需要重新加载Application 。 相反,我们开始使用冷交换function。 冷切换是由“重新运行”button触发的,该button是Android Studio中播放/启动button右侧的4个button。 这是停止button,箭头从左侧出来并向上。 在即时运行中冷交换代码,我们发现更可靠,它也执行完整的应用程序重新启动,基本上像一个正常的构build,除了更快。
  3. 升级到最新的Android Studio插件版本。 该插件已经变得更好。 它仍然有问题,但它更好。 我期望更多的bug修复插件2.3

总的来说,它还不完美。 我仍然不得不忍受奇怪的构build问题,并偶尔build立清理。 仍然感觉像一个testing版。