Android studio Gradle build speed up
The dev are working on it. Like I posted in this answer the fastest solution right now is to use gradle from the command line and you should switch to binary libs for all modules you do not develop. On g+ there is a discussion with the developers about it.
Android Studio gradle takes too long to build
Found the reason!! If Android Studio has a proxy server setting and can't reach the server then it takes a long time to build, probably its trying to reach the proxy server and waiting for a timeout. When I removed the proxy server setting its working fine.
Removing proxy: File > Settings > Appearance & Behavior > System settings > HTTP Proxy
How to Speed up Gradle build process in Android Studio
There are some solutions I have mentioned:
Technique #1
Open up gradle.properties file
add the following line
org.gradle.daemon=true
Technique #2
Open up gradle.properties file
add the following line
org.gradle.parallel=true
Technique #3
Open up gradle.properties file
add the following line
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Technique #4
There are many other techniques for optimizing the speed of gradle build. If you are still having the problem I prefer you to use gradle from command line.
For more details, you can see a discussion on G+ with the developers about it.
Speed-up Android Studio Builds
I was able to reduce build times to 3-5 seconds.
- Assigning more RAM used by Android Studio & Gradle
- Configuring compilation to run in parallel
- Compiling on demand
RAM settings are an absolute MUST in my opinion - after giving it 2GB (I have 24GB with plenty to spare) the UI is fast and snappy & code editing is very fast, no lag at all.
Here is the full list of instructions I used:
Android Studio RAM Settings:
https://extremegtx.wordpress.com/2015/01/08/android-studio-speed-up-studio-and-gradle/
Instructions are for Windows, if you're on MAC use the following path instead:
~/Library/Preferences/{FOLDER_NAME}/studio.vmoptions
Gradle Settings:
http://jimulabs.com/2014/10/speeding-gradle-builds/
For reference I am running an overclocked Xeon X5650 @ 3.85GHz and compiling a pretty big project with lots of libraries and dependencies.
How to speed up Android Studio 2.3 or 3?
Answer by user: https://stackoverflow.com/users/624706/sergii-pechenizkyi
Source: Building and running app via Gradle and Android Studio is slower than via Eclipse
Hardware
I'm sorry, but upgrading development station to SSD and tons of ram has probably a bigger influence than points below combined.
Tools versions
Increasing build performance has major priority for the development teams, so make sure you are using latest Gradle and Android Gradle Plugin.
Configuration File
Create a file named gradle.properties
in whatever directory applies:
/home/<username>/.gradle/
(Linux)/Users/<username>/.gradle/
(Mac)C:\Users\<username>\.gradle
(Windows)
Append:
# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.krd1mm27v
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true
# Enables new incubating mode that makes Gradle selective when configuring projects.
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true
# Set to true or false to enable or disable the build cache.
# If this parameter is not set, the build cache is disabled by default.
# http://tools.android.com/tech-docs/build-cache
android.enableBuildCache=true
Gradle properties works local if you place them at projectRoot\gradle.properties
and globally if you place them at user_home\.gradle\gradle.properties
. Properties applied if you run gradle tasks from console or directly from idea:
IDE Settings
It is possible to tweak Gradle-IntelliJ integration from the IDE settings GUI. Enabling "offline work" (check answer from yava below) will disable real network requests on every "sync gradle file".
Native multi-dex
One of the slowest steps of the apk build is converting java bytecode into single dex file. Enabling native multidex (minSdk 21 for debug builds only) will help the tooling to reduce an amount of work (check answer from Aksel Willgert below).
Dependencies
Prefer @aar
dependencies over library sub-projects.
Search aar package on mavenCentral, jCenter or use jitpack.io to build any library from github. If you are not editing sources of the dependency library you should not build it every time with your project sources.
Antivirus
Consider to exclude project and cache files from antivirus scanning. This is obviously a trade off with security (don't try this at home!). But if you switch between branches a lot, then antivirus will rescan files before allowing gradle process to use it, which slows build time (in particular AndroidStudio sync project with gradle files and indexing tasks). Measure build time and process CPU with and without antivirus enabled to see if it is related.
Profiling a build
Gradle has built-in support for profiling projects. Different projects are using a different combination of plugins and custom scripts. Using --profile
will help to find bottlenecks.
Related Topics
How to Create Directory Automatically on Sd Card
How to Add a Button to Preferencescreen
Deprecated Gradle Features Were Used in This Build, Making It Incompatible with Gradle 5.0
How to Detect If I am in Release or Debug Mode
Recyclerview Store/Restore State Between Activities
How to Get the Dialer to Open with Phone Number Displayed
Android: Access Child Views from a Listview
Get Clicked Item and Its Position in Recyclerview
How to Refresh Activity After Changing Language (Locale) Inside Application
Use a Local Database in Xamarin
How to Programmatically Enable Auto Start and Floating Window Permissions
Date and Time Change Listener in Android
How to Get the Touch Position in Android