配置Gradle以加速cordova-cli构建

时间:2018-03-28 13:19:52

标签: java android cordova gradle compilation

我使用Cordova CLI构建我的混合Android应用程序。为了加快编译速度,我已将整个Android安装移至SSD,并使用额外的8Gb内存(总计16Gb)升级了我的机器。尽管如此,我认为编译时间没有任何影响,这些影响几乎与这些升级之前的数字相同。我开始怀疑仅仅提供更多资源是不够的。不知道Gradle需要被告知要使用它们。但是,我不确定如何在混合Cordova应用程序的环境中执行此操作。

根据我在this Reddit thread中找到的提示,我在gradle.properties文件夹中创建了一个app/platforms/android文件

org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xms2048m -Xmx8096m -XX:PermSize=1024 
                   -XX:MaxPermSize=1024m -XX:ReservedCodeCacheSize=1024m

这确实有效果 - 它使构建速度快了近50%!使用新Gradle守护进程的第一个构建通常较慢,因此我重新编译。有一个小的节省,但构建仍然比以前慢。显然,配置Gradle还有更多要求它使用大量内存。但是,我没有域名经验。有人可以告诉我如何才能获得一些真正的性能优势吗?

2 个答案:

答案 0 :(得分:0)

我最近正在调整Jenkins管道并将应用程序从Maven迁移到Gradle,所以我希望我的知识可能有用。

首先,您可以通过以下方式衡量执行时间的差异:

  • 删除所有.gradle个文件夹。它是Gradle的缓存文件夹和它 可能会被意外使用。
  • 执行gradle --stop。它将停止Gradle守护进程,以便不缓存 在守护进程本身可以使用。
  • 运行gradle clean build

其次,您获得的收益主要是由于使用org.gradle.parallel=true。您可以尝试删除其他内容,我敢打赌,性能不会发生重大变化。 org.gradle.daemon=true是该选项的默认值。另外,我会修改JVM标志,例如Java 8中未使用-XX:MaxPermSize(虽然我了解您正在使用Android应用程序)

第三,关于加速编译本身,你可以使用这个标志:

GRADLE_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1"

它应该关闭JVM配置文件,以便它可以帮到你。

第三,检查compile vs implementation。理论上使用implementation配置可以加快编译和重新编译过程,因为不使用传递依赖。

我想我不知道其他方法可以加快Gradle项目的 编译 。但是,如果您对加速整个构建感兴趣,还有并行测试执行等事情。

最后一点:检查你的插件。有时他们会做你不需要的无用事情(我的瓶颈是wsdl2java),例如复制许多未使用的生成源。

希望它有所帮助!

答案 1 :(得分:0)

将项目的构建文件夹移动到SSD:构建期间有大量的写入操作,写入总是比读取慢得多。

并配置防病毒软件(如果有)以从扫描中排除所有Java二进制文件,项目的构建文件夹和〜/ .gradle。

这两个动作应该足以看出差异。