Speeding up the flutter android gradle build
- Make sure you’re using the latest version of Gradle. Generally with every new update there is a significant improvement in performance.
Note: Java 1.8 is faster than 1.6. Make sure it’s updated too.
- Try to minimize the use of modules. There are many cases where we need to fork the library to modify it to fit according to our needs. A module takes 4x greater time than a
jar
oraar
dependency. This happens due to the fact that the module needs to be built from the scratch every time. - Enable gradle Offline Work from Preferences-> Build, Execution, Deployment-> Build Tools-> Gradle. This will not allow the gradle to access the network during build and force it to resolve the dependencies from the cache itself.
Note: This only works if all the dependencies are downloaded and stored in the cache once. If you need to modify or add a new dependency you’ll have to disable this option else the build would fail. - Open up the gradle.properties file from the root of your project. Add the following lines of code in it.
org.gradle.daemon=true
Gradle daemon is a background process. Adding this would consume some extra memory while building.
org.gradle.parallel=true
The above line of code enables compilation of multiple modules at the same time. Besides that it also gives us other benefits such as;
- Re-using the configuration for unchanged projects
- Project-level is up-to-date checks
- Using pre-built artifacts in the place of building dependent projects
Adding the following line of code also aids us in speeding up the build.
org.gradle.configureondemand=true
Another important property is;
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
The above line is used to allow Java compilers to have available memory up to 2 GB (2048 MB). It should only be used if you have available memory more than 2 GB.
This is how the gradle.properties file should look like:
- Avoid dynamic dependencies such as
compile 'com.google.maps.android:android-maps-utils:0.4+'
.Dynamic Dependencies slow down your build since they keep searching for the latest builds every time. To improve the performance we need to fix the version in place.
- Use only those dependencies that you need. For example google maps dependency, instead of importing
compile 'com.google.android.gms:play-services:8.4.0'
just importcompile 'com.google.android.gms:play-services-maps:8.4.0'
.
also add this:
org.gradle.caching=true
org.gradle.workers.max=(max # of worker processes)
When configured, Gradle will use a maximum of the given number of workers. Default is number of CPU processors
Bringing such tweaks into use in our project saves a lot of time in the long run. I hope these gradle build tips will help you in improving your project build time.
Comments
Post a Comment