我使用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还有更多要求它使用大量内存。但是,我没有域名经验。有人可以告诉我如何才能获得一些真正的性能优势吗?
答案 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。
这两个动作应该足以看出差异。