在包含大约140个项目/库的多项目设置中使用gradle构建时,构建时间需要1小时22分钟。我正在使用--parallel
。我们的ANT构建只需不到20分钟而无需并行构建。
这正是我所做的。
./gradlew clean
./gradlew build --parallel
我做了一点测试,似乎dexing花费的时间最长。有没有办法让gradle过程重用它已经有的东西?如果已经构建了库,则应该重新使用已经dexed的库。
我看到了选项--no-rebuild
,但是当我使用该选项运行时,它会显示以下内容
File '/path/to/project/build/libs/project.aar' specified for property 'bundle' does not exist.
我用通用的东西替换了文件路径和项目名称。
使用Gradle 1.9-rc-3
其他信息(2014年1月15日):
preDexDebug
和preDexRelease
在每个项目上花费了很长时间。比任何其他任务都长得多。
进展(2014年1月15日):
好的,暂时,我将preDexLibraries = false
放入所有build.gradle
个文件中。但是,我仍然想知道一个可以放入该条目的集中位置,它会影响所有其他build.gradle
文件。
但是,现在dexRelease
和dexDebug
需要很长时间。有什么方法可以告诉构建只做dexDebug
或dexRelease
并跳过另一个?
进展(2014年1月15日):
使用assembleDebug
工作。但是,它似乎仍然没有重新使用已经dexed库。因为德兴仍然需要永远。每个项目大约需要一分钟。 有没有办法让gradle重新使用已经dexed的库?或者是否有一个不同的原因,为什么构建仍然需要大约一个小时?我们的ANT过程只需不到15分钟。
答案 0 :(得分:21)
执行clean
您实际上删除了已经预定义的库
根据建议in this thread,您可以通过禁用预先设置来为clean
版本节省一些时间(因为在下一次构建时它们将被删除):
android {
dexOptions {
preDexLibraries = false
}
}
答案 1 :(得分:7)
现在每个项目都会预先依赖它自己的依赖项。这个 表示依赖于同一个库的2个组件都将运行pre-dex 在那个图书馆的classes.jar这是愚蠢的。我们正在考虑修复 此
答案 2 :(得分:2)
您是否尝试过设置Gradles编译器的参数?
如果您有远程依赖项,则每次运行项目时,都将使用网络使用远程资源进行操作。您应该为Gradles编译器定义指令,让他使用以下方式脱机工作:
--offline
在这里,我将为您提供编译器设置的屏幕截图,以获得更好的性能:
或者是什么......
来源:http://gradle.org/docs/current/userguide/gradle_command_line.html