691

I'm trying to use Android Studio, and the first time I boot it up, it takes like 45 MINUTES to compile... If I don't quit the application, it is okay - each subsequent compilation/running the app will take around 45 seconds.

I've tried to check some of my caches: there's a .gradle/caches folder in my home directory, and it's contains 123 MB.

There's also a .gradle folder in my project folder... one of the taskArtifacts was like 200 MB. I'm scared to just randomly nuke them both. What parts of the folders are safe to delete?

Is there a better explanation for why my Android Studio is taking forever to run the gradle assemble task upon first time loading the application?

Do I also have to clear the intellij cache too?

4
  • 7
    i found out later that the 45 minutes to compile is because i changed the settings for Compiler -> Gradle to not Use in-process build. nothing to do with the cache
    – David T.
    Commented Apr 18, 2014 at 0:37
  • None of the answers helped. Turns out some images got corrupted. Opening the images in Windows Explorer quickly shows you which images are corrupted (the ones which it doesn't load previews for). Replaced those images and voila!
    – Bimde
    Commented Aug 16, 2017 at 15:47
  • @david-t Could you point to this option's whereabouts? I have version 3.3.1 but cannot find it under Preferences - Build, Execution, Deployment
    – Leo
    Commented Feb 25, 2019 at 11:35
  • 7
    ./gradlew clean build --no-build-cache will force a project build without using the build cache.
    – ams
    Commented Dec 6, 2020 at 3:51

18 Answers 18

738

Gradle cache is located at

  • On Windows: %USERPROFILE%\.gradle\caches
  • On Mac / UNIX: ~/.gradle/caches/

You can browse to these directory and manually delete it or run

rm -r $HOME/.gradle/caches/

on UNIX system. Run this command will also force to download dependencies.


UPDATE

Clear the Android build cache of current project

NOTE: Android Studio's File > Invalidate Caches / Restart doesn't clear the Android build cache, so you'll have to clean it separately.

On Windows:

gradlew cleanBuildCache

On Mac or UNIX:

./gradlew cleanBuildCache

UPDATE 2

This article Put your Android Studio on a diet gives more details on Android Studio caches

13
  • 39
    This did not clear the cache of a maven dependency. I deleted the library from the maven repository and invalidated the Android Studio caches, but the project still builds. This means the gradle cache for the maven dependency is not cleared.
    – mattm
    Commented Jun 26, 2015 at 2:44
  • 4
    The way you described will only clean cache from the main project and it's project dependencies, but the library dependencies are intact. You described how to clean AndroidStudio's cache, but not gradle's cache.
    – Leandroid
    Commented Oct 16, 2015 at 15:38
  • 7
    you probably don't want to dump the entire cache dir, just the build-cache. use rm -rf ~/.gradle/caches/build-cache-1 instead. if you need to have gradle re download dependencies invoke the build with --refresh-dependencies
    – TrevJonez
    Commented Jun 10, 2019 at 17:17
  • 5
    if you want clean and clean cache, run both task: gradlew clean cleanBuildCache
    – equiman
    Commented Jun 18, 2019 at 23:30
  • 1
    cleanBuildCache longer works, use rm -rf $GRADLE_HOME/caches/build-cache-* instead as per www.greatytc.com/a/43245885/481061 Commented Apr 14, 2023 at 11:31
426

As @Bradford20000 pointed out in the comments, there might be a gradle.properties file as well as global gradle scripts located under $HOME/.gradle. In such case special attention must be paid when deleting the content of this directory.

The .gradle/caches directory holds the Gradle build cache. So if you have any error about build cache, you can delete it.

The --no-build-cache option will run gradle without the build cache.

Daemon on MS Windows If you're on Windows, you'll need to kill the daemon before it allows you to clear those directories. See Kill all Gradle Daemons Regardless Version? for more info.

5
  • 61
    One thing to note is that if you have a gradle.properties file in your .gradle folder in your home directory, you will not want to delete the whole folder. Typically, just deleting .gradle/caches is enough to get Gradle to redownload all dependencies. Commented Feb 9, 2015 at 17:28
  • 3
    with every update to Android Studio, gradle builds seem to get slower and slower. Why is it that when I deploy to device, stop app running, and then deploy again (without touching any code at all!) that Android studio once again takes 2 minutes to make a build and deploy it. It's friggin nutz. Commented Jun 12, 2018 at 12:15
  • 2
    On Android Studio to clean out the system caches: Android stdio main menu, choose File | Invalidate Caches/Restart.and build menu >clean project
    – Samiran
    Commented Oct 13, 2018 at 12:16
  • 2
    If you're on Windows, you'll need to kill the daemon first: www.greatytc.com/questions/54189630/…
    – winrid
    Commented Oct 18, 2020 at 19:33
  • 1
    --no-build-cache on windows appears to do nothing
    – Mark
    Commented Feb 25, 2021 at 15:04
146

Take care with gradle daemon, you have to stop it before clear and re-run gradle.

Stop first daemon:

./gradlew --stop

Clean cache using:

rm -rf ~/.gradle/caches/

Run again you compilation

7
  • 1
    Can you explain why or link to some documentation on this?
    – tir38
    Commented Nov 14, 2019 at 16:57
  • 7
    If your gradle daemon is running your gradle caches will be in use. Consequently, your OS will likely prevent the deletion.
    – i0x539
    Commented Jan 15, 2020 at 6:15
  • 1
    After hours of struggle... THANK MATE. I actually belive that ./gradlew --stop this line did everything.
    – Itoun
    Commented Sep 24, 2020 at 16:13
  • 2
    Thank you! This finally solved my problems, when I removed cache manually, tried to rebuild the project and got errors related to cache all the time (even after cleaning everything). Commented Nov 15, 2022 at 13:56
  • 2
    This is a lifesaver information. If you miss this, there is a good chance that you will waste some hours trying to figure out what the hell is going on.
    – guness
    Commented Oct 13, 2023 at 7:05
129

UPDATE

cleanBuildCache no longer works.

Android Gradle plugin now utilizes Gradle cache feature
https://guides.gradle.org/using-build-cache/

TO CLEAR CACHE

Clean the cache directory to avoid any hits from previous builds

 rm -rf $GRADLE_HOME/caches/build-cache-*

https://guides.gradle.org/using-build-cache/#caching_android_projects

Other digressions: see here (including edits).


=== OBSOLETE INFO ===

Newest solution using Gradle task:

cleanBuildCache

Available via Android plugin for Gradle, revision 2.3.0 (February 2017)

Dependencies:

  1. Gradle 3.3 or higher.
  2. Build Tools 25.0.0 or higher.

More info at:
https://developer.android.com/studio/build/build-cache.html#clear_the_build_cache

Background

Build cache
Stores certain outputs that the Android plugin generates when building your project (such as unpackaged AARs and pre-dexed remote dependencies). Your clean builds are much faster while using the cache because the build system can simply reuse those cached files during subsequent builds, instead of recreating them. Projects using Android plugin 2.3.0 and higher use the build cache by default. To learn more, read Improve Build Speed with Build Cache.

NOTE: The cleanBuildCache task is not available if you disable the build cache.


USAGE

Windows:

gradlew cleanBuildCache

Linux / Mac:

gradle cleanBuildCache

Android Studio / IntelliJ:

gradle tab (default on right) select and run the task or add it via the configuration window 

NOTE: gradle / gradlew are system specific files containing scripts. Please see the related system info how to execute the scripts:

1
  • On windows: del $HOME/.gradle/caches Commented Jan 24 at 4:07
21

My ~/.gradle/caches/ folder was using 14G.

After using the following solution, it went from 14G to 1.7G.

$ rm -rf ~/.gradle/caches/transforms-*

$ rm -rf ~/.gradle/caches/build-cache-*

Bonus:

This command shows you in detail the used cache space

$ sudo du -ah --max-depth 1 ~/.gradle/caches/ | sort -hr
19

The gradle daemon also creates a many large text files of every single build log. They are stored here:

~/.gradle/daemon/X.X/daemon-XXXX.out.log

"X.X" is the gradle version in use, like "7.5", and "XXXX" are just random numbers, like "1234". "~" is your user $HOME folder.

The total size can grow to several hundred MB in just a few months. There is no way to disable the logging. The files are not automatically deleted and they do not really need to be retained.

But you can create a small gradle task to automatically delete them, and free up lots of disk space:

Add this to your app/build.gradle:

android {

    buildTypes {
        ...
    }

    // Delete large build log files from ~/.gradle/daemon/X.X/daemon-XXX.out.log
    // Source 1: https://discuss.gradle.org/t/gradle-daemon-produces-a-lot-of-logs/9905
    // Source 2: //www.greatytc.com/questions/23025433/how-to-clear-gradle-cache#51479044
    def gradle = project.getGradle()
    new File("${gradle.getGradleUserHomeDir().getAbsolutePath()}/daemon/${gradle.getGradleVersion()}").listFiles().each {
        if (it.getName().endsWith('.out.log')) {
            // println("Deleting gradle log file: $it") // Optional debug output
            it.delete()
        }
    }
}

To see which files are being deleted, you can enable the println() line, then see the debug output in Android Studio -> View -> Tool Windows -> Build. Then press "Toggle View" button on that window to show the text output.

Note that a Gradle Sync or any Gradle Build will trigger the file deletions.

A better way would be to automatically move the files to the Trash/Recycle Bin, or at least copy them to a Trash folder first. But I don't know how to do that.

1
13

there seems to be incorrect info posted here. some people report on how to clear the Android builder cache (with task cleanBuildCache) but do not seem to realize that said cache is independent of Gradle's build cache, AFAIK.

my understanding is that Android's cache predates (and inspired) Gradle's, but i could be wrong. whether the Android builder will be/was updated to use Gradle's cache and retire its own, i do not know.

EDIT: the Android builder cache is obsolete and has been eliminated. the Android Gradle plugin now uses Gradle's build cache instead. to control this cache you must now interact with Gradle's generic cache infrastructure.

TIP: search for Gradle's cache help online without mentioning the keyword 'android' to get help for the currently relevant cache.

EDIT 2: due to tir38's question in a comment below, i am testing using an Android Gradle plugin v3.4.2 project. the gradle cache is enabled by org.gradle.caching=true in gradle.properties. i do a couple of clean build and the second time most tasks show FROM-CACHE as their status, showing that the cache is working.

surprisingly, i have a cleanBuildCache gradle task and a <user-home>/.android/build-cache/3.4.2/ directory, both hinting the existence of an Android builder cache.

i execute cleanBuildCache and the 3.4.2/ directory is gone. next i do another clean build:

  • nothing changed: most tasks show FROM-CACHE as their status and the build completed at cache-enabled speeds.
  • the 3.4.2/ directory is recreated.
  • the 3.4.2/ directory is empty (save for 2 hidden, zero length marker files).

conclusions:

  1. caching of all normal Android builder tasks is handled by Gradle.
  2. executing cleanBuildCache does not clear or affect the build cache in any way.
  3. there is still an Android builder cache there. this could be vestigial code that the Android build team forgot to remove, or it could actually cache something strange that for whatever reason has not or cannot be ported to using the Gradle cache. (the 'cannot' option being highly improvable, IMHO.)

next, i disable the Gradle cache by removing org.gradle.caching=true from gradle.properties and i try a couple of clean build:

  • the builds are slow.
  • all tasks show their status as being executed and not cached or up to date.
  • the 3.4.2/ directory continues to be empty.

more conclusions:

  1. there is no Android builder cache fallback for when the Gradle cache fails to hit.
  2. the Android builder cache, at least for common tasks, has indeed been eliminated as i stated before.
  3. the relevant android doc contains outdated info. in particular the cache is not enabled by default as stated there, and the Gradle cache has to be enabled manually.

EDIT 3: user tir38 confirmed that the Android builder cache is obsolete and has been eliminated with this find. tir38 also created this issue. thanks!

5
  • Can you link to where you read that the Android builder cache is now obsolete and that it now uses Gradle's build cache instead?
    – tir38
    Commented Jan 1, 2020 at 22:53
  • @tir38, nope. but i updated my answer above with my own testing. thanks.
    – Lanchon
    Commented Jan 17, 2020 at 20:25
  • Thanks a bunch for your diligent research. You confirm most of what I saw in testing too: 1. empty 3.4.2/ dir. 2. presence of cleanBuildCache task 3. disabling gradle build cache and rebuilding didn't show any evidence of android tasks hitting cache.
    – tir38
    Commented Jan 22, 2020 at 22:24
  • 2
    A little more poking and I got actual confirmation that android's build cache is/was rolled into gradle's issuetracker.google.com/issues/37324009#comment3 I opened a doc request to remove that doc page: issuetracker.google.com/issues/148169019
    – tir38
    Commented Jan 22, 2020 at 22:30
  • 1
    Very thorough and insightful answer, thank you very much! Commented Oct 27, 2023 at 12:44
5

Latest command:

--no-build-cache

Found at: https://docs.gradle.org/current/userguide/build_cache.html Works perfectly for a command like:

./gradlew SomeApp:installDebug --no-build-cache
5

FOR MAC or LINUX Users:

To clean a cache for specific project/jar:

Find all the cache files related to that project

find ~/.gradle/caches -name your-project-artifact-id

The above command will return all the cache files related to your-project-artifact-id (e.g., com.google).

Pass the path of each result to the command below:

rm -rf <each file returned>

Finally, to pull latest artifacts, run this:

gradle clean install

Update:

One liner to delete the cache:

for file in `find ~/.gradle/caches -name yourprojectartifactid`; do `rm -rf $file`; done
1

This article Put your Android Studio on a diet helped a lot as recommended here

For those looking for a quick fix press on: File > Invalidate Caches Restart

1

Using the gradle commands didn't work with my projects, I kept getting failures that the commands listed above were not supported in my root project. Deleting the directories in the cache directory worked for me.

sudo rm -r .gradle/caches/*

I had attempted to remove artifacts that came up in my error reports, but this provided me with a clean workspace and was able to narrow my dependency issues much easier.

1

i had same issue just go to

File -> invalidate cashes then check option Clear file system cash and local history then click on button invalidate and restart after restarting android studio should be gone. :-) GL

1
0

double shift to search for the whole project -> execute grade task -> input "gragle clean" command -> run this command

0

For Beginners (How to Locate Caches):

  1. Close Android Studio completely.
  2. Locate your project file on the computer where you store it while creating the app. For example, I stored mine on the Desktop.
  3. Open the particular app profile, then go to .gradle then go to Build Output Cleanup where you should see the cache.
  4. Delete the cache.
  5. Open Android studio and run your app again.
0

sudo rm -r /home/{yourname}/.local/share/Trash/files/7.4 I removed gradle cache of v7.4 using this

-1

Upgrading compileSdkVersion and targetSdkVersion from 30 to 31, fixed the problem in my case. But the build was failing at 99% giving this weird error here More than one file was found with OS independent path 'lib/armeabi-v7a/libfbjni.so'. Solved by the solution given.

-2

To clear your gradle cache in android studio:

  1. open terminal and
  2. run gradlew clean
4
  • 20
    This is incorrect. This does not clear the Gradle cache.
    – Ryan M
    Commented Jan 26, 2021 at 21:12
  • Wrong answer. This command actually does this www.greatytc.com/questions/34005713/…. Commented Jul 4, 2022 at 19:05
  • 1
    @AbdulMateen this works for windows, for linux you need ./gradlew clean Commented Jul 7, 2022 at 13:40
  • 1
    gradlew clean will delete a build directory, all your classes will be removed for a fresh compile. assemble will create an archive (JAR) file from your Java project and will run all other tasks that require compile, test and so on
    – billa-code
    Commented Sep 2, 2022 at 9:09
-3

I delete the content of gradel.properties (global properties) manually. The operation is completed successfully.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.