在本教程中,我们将看看可以用 Gradle 构建来加速构建时间的事情。
加快您的 Android Gradle 构建
随着我们的 Android Studio 项目的规模增加, gradle build 的性能变得至关重要。即使是最简单的项目的 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'
.
在我们的项目中使用此类调整可以从长远来看节省大量时间,我希望这些 gradle build 提示能帮助您改善项目的构建时间。