【问题标题】:Android Instant Run Slow BuildsAndroid Instant Run 慢速构建
【发布时间】:2016-09-16 22:53:20
【问题描述】:

我不断听到关于即时运行的讨论,好像它的状态很好,但是我和我的团队经常遇到该功能的重大问题,以及因此而降低的编码体验。

在即时运行之前,我们的干净构建大约需要 1 分 30 秒,之后我们会得到大约 25 秒或偶尔 40 秒的构建。虽然即时运行确实有时确实将构建时间减少到了 6-12 秒,但在其他时候,它导致我们陷入疯狂的长时间构建,我们已经看到需要长达 13 分钟的时间,这在很大程度上抵消了增量编译的任何收益。

似乎在大多数情况下,小的更改仍需要 40 秒。有时是 6 秒,但这种情况很少见。

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

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

是我们做错了什么,还是有人找到了解决办法?

编辑:一些开发人员似乎遇到了这个问题。我正在跟踪 a bug here. 请随意加注星标并加入讨论。

【问题讨论】:

  • 这不是一个答案,但我们决定推迟使用即时运行功能,直到他们解决了一些明显的问题。我们遇到了不一致的问题,它们显然与高效的开发理念相矛盾。
  • "...好像状态很好"。欢迎来到 Android Studio PR 的世界。 AS 团队发布了尚未准备好迎接黄金时段的新功能,并相信开发人员会“习惯它”——Instant Run 也不例外(请原谅双关语)。我的经验是,随着每个版本的发布,AS 似乎越来越差......
  • ADT 的执行速度比 Studio 更快(在构建 apk 和加载项目方面),在每个版本中添加更多功能使 android studio 成为 memory eater
  • 我发现整个 gradle 的移动要好得多。我的构建获得了很大的灵活性,并且整体构建时间显着减少。我对 AndroidStudio / IntelliJ 可以随心所欲地消耗内存感到满意。这就是 IDE 如此快速的原因。现在内存太便宜了。在过去的 5 年里,我所有的电脑都至少有 16GB 的内存。

标签: android android-gradle-plugin android-build android-instant-run


【解决方案1】:

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

  1. 我们发现 Lombok 在即时运行的守护程序中导致内存泄漏。我们发现了内存泄漏,因为使用新预热的守护进程,我们的构建需要大约 15 秒,但是在构建应用程序一个小时后,我们的构建将开始花费超过 1 分钟的时间来进行最简单的更改。我们发现,从 lombok 迁移我们的应用可以解决内存泄漏问题。
  2. 我们停止使用即时运行的热和温代码交换。我们发现这些经常会导致错误或问题,更不用说您需要注意您所做的更改是否需要重新加载Application。相反,我们开始使用冷交换功能。冷交换由“重新运行”按钮触发,该按钮是 Android Studio 中播放/开始按钮右侧的 4 个按钮。这是停止按钮,箭头从左侧出来并向上。我们发现在即时运行中冷交换代码更可靠,它还会执行完整的应用程序重启,基本上就像正常构建一样,只是速度更快。
  3. 已升级到最新的 Android Studio 插件版本。插件变得更好了。它仍然有问题,但它更好。我希望插件 2.3 能够修复更多​​错误

总的来说,它仍然不完美。我仍然必须忍受奇怪的构建问题,并且偶尔会进行构建清理。感觉还是测试版。

【讨论】:

    猜你喜欢
    • 2016-03-27
    • 1970-01-01
    • 2016-09-03
    • 2019-06-22
    • 2016-03-02
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多