gradle 캐시를 지우는 방법은 무엇입니까?


317

Android Studio를 사용하려고하는데 처음 부팅 할 때 컴파일하는 데 45 분이 걸립니다 ... 응용 프로그램을 종료하지 않으면 괜찮습니다-각 후속 컴파일 / 실행에는 앱이 필요합니다 약 45 초

내 캐시 중 일부를 확인하려고했습니다. .gradle/caches 홈 디렉토리에 폴더가 있으며 123MB가 들어 있습니다.

또한있다 .gradle 내 프로젝트 폴더의 폴더 ... 중 하나는 taskArtifacts2백메가바이트 같았다. 나는 둘 다 무작위로 핵무기를 두려워합니다. 폴더의 어떤 부분을 삭제해도 안전한가요?

내 Android Studio가 계속 실행되는 이유에 대한 더 나은 설명이 있습니까? gradle assemble애플리케이션을 처음로드 할 때 작업 있습니까?

intellij 캐시도 삭제해야합니까?


3
나중에 컴파일 할 45 분이에 대한 설정을 변경 Compiler -> Gradle하지 않았기 때문이라는 것을 알았습니다 Use in-process build. 캐시와는 아무 관련이 없습니다
David T.

어떤 대답도 도움이되지 않았습니다. 일부 이미지가 손상되었습니다. Windows 탐색기에서 이미지를 열면 손상된 이미지 (미리보기를로드하지 않은 이미지)가 빠르게 표시됩니다. 그 이미지와 짜잔을 교체했습니다!
Bimde

@ david-t이 옵션의 행방을 가리킬 수 있습니까? 버전 3.3.1을 가지고 있지만 Preferences-Build, Execution, Deployment
Leo

답변:


261

@ Bradford20000이 주석에서 지적했듯이 gradle.properties파일 아래에 전역 gradle 스크립트 가있을 수 있습니다 $HOME/.gradle. 이 경우이 디렉토리의 내용을 삭제할 때 특별한주의를 기울여야합니다.

.gradle/caches디렉토리는 보유하고 Gradle빌드 캐시를. 따라서 빌드 캐시에 대한 오류가 있으면 삭제할 수 있습니다.


43
주목할 것은 홈 디렉토리의 .gradle 폴더에 gradle.properties 파일이 있으면 전체 폴더를 삭제하지 않을 것입니다. 일반적으로 .gradle / caches 만 삭제하면 Gradle이 모든 종속성을 다시 다운로드 할 수 있습니다.
Bradford2000

1
Android Studio를 업데이트 할 때마다 gradle 빌드가 느려지고 느려집니다. 기기에 배포하고 앱 실행을 중단 한 다음 코드를 전혀 건드리지 않고 다시 배포하면 Android Studio가 빌드 및 배포에 다시 2 분이 걸리는 이유는 무엇입니까? friggin nutz입니다.
누군가 어딘가에

1
Android Studio에서 시스템 캐시를 정리하려면 : Android stdio 기본 메뉴에서 File | 캐시 무효화 / 재시작 및 빌드 메뉴> 프로젝트 정리
Shomu

368

Gradle 캐시는

  • Windows에서 : %USER_HOME%\.gradle/caches/
  • Mac / Unix의 경우 : ~/.gradle/caches/

이 디렉토리를 찾아 수동으로 삭제하거나 실행할 수 있습니다

rm -rf $HOME/.gradle/caches/

유닉스 시스템에서. 이 명령을 실행하면 종속성이 강제로 다운로드됩니다.

업데이트 2 : 현재 프로젝트 Android 빌드 캐시 지우기

참고 : Android Studio의 파일 | 캐시 무효화 / 다시 시작 은 Android 빌드 캐시를 지우지 않으므로 별도로 정리해야합니다.

Windows에서 :

gradlew cleanBuildCache

Mac 또는 Linux에서 :

./gradlew cleanBuildCache

20
이것은 maven 의존성의 캐시를 지우지 않았습니다. maven 저장소에서 라이브러리를 삭제하고 Android Studio 캐시를 무효화했지만 프로젝트는 여전히 빌드됩니다. 이는 maven 종속성에 대한 gradle 캐시가 지워지지 않음을 의미합니다.
mattm

2
설명 한 방법은 기본 프로젝트와 프로젝트 종속성의 캐시 만 정리하지만 라이브러리 종속성은 손상되지 않습니다. AndroidStudio의 캐시를 정리하는 방법을 설명했지만 gradle의 캐시는 정리하지 않았습니다.
Leandroid

예, 그러나 프로젝트를로드하기 전에 Mac에 표시되지 않습니다.
milosmns

그것은 여전히 최신 버전 안드로이드 스튜디오에서 잘 작동
라주 yourPepe

2
캐시를 깨끗하고 깨끗하게하려면 두 작업을 모두 실행하십시오.gradlew clean cleanBuildCache
equiman

62

편집 : cleanBuildCache 더 이상 작동하지 않습니다

안드로이드 gradle 플러그인은 이제 gradle 캐시 기능을 사용합니다

REF : https://guides.gradle.org/using-build-cache/

캐시를 지우려면

이전 빌드에서 적중되지 않도록 캐시 디렉토리를 정리하십시오.

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

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

다른 치수

여기를 참조 하십시오 (편집 포함)를 .

================

폐기 정보 :

gradle 작업을 사용하는 최신 솔루션

cleanBuildCache

Gradle, 개정판 2.3.0 용 Android 플러그인을 통해 사용 가능 (2017 년 2 월)

종속성 :

  1. Gradle 3.3 이상
  2. 빌드 도구 25.0.0 이상

더 많은 것 :

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

배경

캐시 작성 :

프로젝트를 빌드 할 때 Android 플러그인이 생성하는 특정 출력 (예 : 패키지화되지 않은 AAR 및 사전에 덱싱 된 원격 종속성)을 저장합니다. 빌드 시스템은 캐시 된 파일을 다시 작성하는 대신 후속 빌드 중에 단순히 재사용 할 수 있기 때문에 캐시를 사용하는 동안 클린 빌드가 훨씬 빠릅니다. Android 플러그인 2.3.0 이상을 사용하는 프로젝트는 기본적으로 빌드 캐시를 사용합니다. 자세한 내용은 빌드 캐시로 빌드 속도 향상을 참조하십시오.

참고 : 빌드 캐시를 비활성화하면 cleanBuildCache 작업을 사용할 수 없습니다.

용법:

창문

gradlew cleanBuildCache

리눅스 / 맥

gradle cleanBuildCache

안드로이드 스튜디오 / IntelliJ

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

** gradle / gradlew는 스크립트가 포함 된 시스템 별 파일입니다. 스크립트를 실행하는 방법은 시스템 정보를 참조하십시오

  1. 리눅스-https: //www.cyberciti.biz/faq/howto-run-a-script-in-linux/
  2. 창-https: //technet.microsoft.com/en-us/library/bb613481(v=vs.85).aspx
  3. https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/index.html

43

gradle 데몬을 조심하십시오. 그라들을 지우고 다시 실행하기 전에 중지해야합니다.

첫 번째 데몬을 중지하십시오.

./gradlew --stop

다음을 사용하여 캐시를 정리하십시오.

rm -rf ~/.gradle/caches/

다시 당신이 컴파일을 실행


이유를 설명하거나 이에 대한 문서로 연결할 수 있습니까?
tir38

1
gradle 데몬이 실행 중이면 gradle 캐시가 사용됩니다. 결과적으로 OS가 삭제를 막을 수 있습니다.
0x539

6

gradle 데몬은 또한 모든 단일 빌드 로그의 많은 큰 텍스트 파일을 만듭니다. 그들은 여기에 저장됩니다 :

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

"XX"는 "4.4"와 같은 사용중인 gradle 버전이며 "XXXX"는 "1234"와 같은 임의의 숫자입니다.

몇 개월 만에 전체 크기가 수백 MB까지 커질 수 있습니다. . 로깅을 비활성화 할 수있는 방법이 없으며 파일이 자동으로 삭제되지 않으므로 실제로 보관할 필요가 없습니다.

그러나 작은 gradle 작업을 만들어 자동으로 삭제하고 많은 디스크 공간을 확보 할 수 있습니다.

이것을 다음에 추가하십시오 app/build.gradle:

android {

    buildTypes {
        ...
    }

    // Delete large build log files from ~/.gradle/daemon/X.X/daemon-XXX.out.log
    // Source: https://discuss.gradle.org/t/gradle-daemon-produces-a-lot-of-logs/9905
    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()
        }
    }
}

어떤 파일이 삭제되는지 확인하려면 Android Studio->보기-> 도구 창-> 빌드에서 디버그 출력을 볼 수 있습니다. 그런 다음 해당 창에서 "토글보기"버튼을 눌러 텍스트 출력을 표시하십시오.

Gradle Sync 또는 Gradle Build는 파일 삭제를 트리거합니다.

더 좋은 방법은 파일을 휴지통 / 휴지통으로 자동으로 옮기거나 최소한 휴지통 폴더에 먼저 복사하는 것입니다. 그러나 나는 그것을하는 방법을 모른다.


OSX 항목을 파인더 / 휴지통에 직접 제거하지 않고 보내려면이 게시물에 apple.stackexchange.com/questions/50844/…
AnneTheAgile

4

여기에 잘못된 정보가 게시 된 것 같습니다. 어떤 사람들은 안드로이드 빌더 캐시를 지우는 방법에 대해보고합니다 (작업 포함)cleanBuildCache 하지만 ) 캐시가 Gradle의 빌드 캐시 AFAIK와 독립적이라는 것을 깨닫지 못하는 것 같습니다.

내 이해는 Android의 캐시가 Gradle보다 오래되고 영감을 받았다는 것입니다.하지만 잘못되었을 수 있습니다. 안드로이드 빌더가 Gradle의 캐시를 사용하고 자체적으로 은퇴하도록 업데이트 될지 여부는 모르겠습니다.

편집 : Android 빌더 캐시는 더 이상 사용되지 않으며 제거되었습니다. Android Gradle 플러그인은 이제 Gradle의 빌드 캐시를 대신 사용합니다. 이 캐시를 제어하려면 이제 Gradle의 일반 캐시 인프라와 상호 작용해야합니다.

팁 : 키워드 'android'를 언급하지 않고 온라인으로 Gradle의 캐시 도움말을 검색하여 현재 관련 캐시에 대한 도움말을 얻으십시오.

편집 2 : 아래 의견에 tir38의 질문으로 인해 Android Gradle 플러그인 v3.4.2 프로젝트를 사용하여 테스트하고 있습니다. Gradle을 캐시로 사용할 수 있습니다 org.gradle.caching=true에서 gradle.properties. 나는 clean build두 번째로 대부분의 작업을 보여줍니다FROM-CACHE 로 상태가 표시되어 캐시가 작동 중임을 나타냅니다.

놀랍게도, 나는 cleanBuildCachegradle 작업과 <user-home>/.android/build-cache/3.4.2/디렉토리를 가지고 있는데, 둘 다 안드로이드 빌더 캐시가 있음을 암시합니다.

나는 실행 cleanBuildCache하고 3.4.2/디렉토리는 사라졌다. 다음으로 나는 또 다른 일을합니다 clean build:

  • 변경 사항 없음 : 대부분의 작업 FROM-CACHE이 상태로 표시 되며 빌드가 캐시 가능 속도로 완료되었습니다.
  • 3.4.2/디렉토리가 다시 만들어집니다.
  • 3.4.2/디렉토리가 비어 (2, 길이 제로 마커 파일을 숨겨진 저장).

결론 :

  1. 모든 일반 Android 빌더 작업의 캐싱은 Gradle에서 처리합니다.
  2. 실행 cleanBuildCache은 빌드 캐시를 지우거나 영향을 미치지 않습니다.
  3. 여전히 안드로이드 빌더 캐시가 있습니다. 이것은 안드로이드 빌드 팀이 제거하는 것을 잊어 버린 흔적 코드 일 수 있거나 실제로 어떤 이유로 든 Gradle 캐시를 사용하여 이식 할 수 없거나 이상한 것으로 이상한 것을 캐시 할 수 있습니다. ( 'HONT'옵션은 크게 개선 될 수 없습니다.)

다음, 난 제거하여 Gradle을 캐시를 비활성화 org.gradle.caching=true에서 gradle.properties와 나는 몇 가지를 시도 clean build:

  • 빌드가 느립니다.
  • 모든 작업은 상태가 캐시되어 있거나 최신 상태가 아니라 실행중인 것으로 표시합니다.
  • 3.4.2/디렉토리가 비어되고 있습니다.

더 많은 결론 :

  1. Gradle 캐시에 도달하지 못한 경우에 대한 Android 빌더 캐시 폴 백이 없습니다.
  2. 적어도 일반적인 작업을 위해 Android 빌더 캐시는 실제로 앞에서 언급 한 것처럼 제거되었습니다.
  3. 관련 Android 문서 에 오래된 정보가 포함되어 있습니다. 특히 캐시 여기에 명시된대로 기본적 으로 활성화되어 있지 않으며 Gradle 캐시는 수동으로 활성화해야합니다.

편집 3 : 사용자 tir38은 Android 빌더 캐시가 더 이상 사용되지 않으며이 찾기 로 제거되었음을 확인했습니다 . tir38 도이 문제를 만들었습니다 . 감사!


이제 Android 빌더 캐시가 더 이상 사용되지 않고 대신 Gradle의 빌드 캐시를 사용한다는 것을 알 수있는 곳으로 링크 할 수 있습니까?
tir38

@ tir38, 아뇨. 하지만 위의 답변을 자체 테스트로 업데이트했습니다. 감사.
Lanchon

부지런한 연구에 감사드립니다. 당신은 내가 테스트에서 본 것을 대부분 확인합니다 : 1. 빈 3.4.2/디렉토리. 2. cleanBuildCache작업의 존재 3. gradle 빌드 캐시를 비활성화하고 다시 빌드해도 캐시에 충돌하는 안드로이드 작업의 증거는 나타나지 않았습니다.
tir38

2
조금 더 파고 안드로이드의 빌드 캐시가 gradle의 issuetracker.google.com/issues/37324009#comment3에 실제로 있다는 확인을 받았습니다 . 문서 페이지를 삭제하기 위해 문서 요청을 열었습니다 : issuetracker.google.com/issues/148169019
tir38

2

명령: rm -rf ~/.gradle/caches/


1
@JonAdams 나는 당신의 사면을 간청하지만 질문은 분명히 "그라들 캐시를 지우는 방법은 무엇입니까?"
Serj Ardovic 2014 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.