When building with gradle on a multi-project setup containing roughly 140 projects/libraries, the build time took 1 hour and 22 minutes. And i was using --parallel
. And our ANT build takes less than 20 minutes without parallel building.
Here is exactly what i did.
./gradlew clean
./gradlew build --parallel
I did a little testing it seems like the dexing is taking the longest amount of time. Is there a way to get the gradle process to re-use the stuff it has already dexed? If the libraries have already been built, it should re-use the already dexed libraries.
I saw the option --no-rebuild
, but when i run with that option it says the following
File '/path/to/project/build/libs/project.aar' specified for property 'bundle' does not exist.
I replaced the file path and project name with generic stuff.
Using Gradle 1.9-rc-3
Additional information(15 Jan 2014):
preDexDebug
and preDexRelease
took a VERY long time on each project. Much longer than any other task.
Progress(15 Jan 2014):
Ok, for now, i put preDexLibraries = false
into all of the build.gradle
files. However, i still would like to know a centralize place that i can put that entry and it affect all the other build.gradle
files.
However, now dexRelease
and dexDebug
are taking a long time. Is there any way that i can tell the build to only do the dexDebug
or dexRelease
and skip the other one?
Progress(15 Jan 2014):
Using assembleDebug
worked. However, it still seems like it is not re-using the already dexed libraries. Because dexing is still taking forever. It takes about a minute for each project. Is there a way to get gradle to re-use the already dexed libraries? Or is there a different reason why the build is still taking about an hour? Our ANT process takes less than 15 minutes.
Doing a clean
you actually delete the already predexed libraries.
As suggested in this thread you could save some time on clean
builds by disabling predexing (because at the next build they will be deleted):
android {
dexOptions {
preDexLibraries = false
}
}