빌드 캐시로 클린 빌드 가속화

빌드 캐시는 프로젝트를 빌드할 때 Gradle용 Android 플러그인이 생성하는 특정 출력을 저장합니다(예: 언패키징된 AAR 및 pre-dexed 원격 종속성). 클린 빌드는 캐시를 사용하는 동안에 훨씬 더 빠릅니다. 그 이유는 빌드 시스템이 후속 빌드 동안 캐시된 파일을 다시 생성하는 것이 아니라 재사용할 수 있기 때문입니다. 또한 빌드 캐시는 Continuous Integration 서버에서 작동하며, 단일 로컬 시스템에서 여러 빌드 프로세스를 실행할 때도 작동합니다.

Android 플러그인 2.3.0 이상을 사용하는 프로젝트는 기본적으로 빌드 캐시를 활성화합니다(명시적으로 빌드 캐시를 비활성화하지 않는 한). 그러나 다음과 같은 빌드 속성 중 하나를 아래 나타난 것과 다르게 설정한 경우, 플러그인은 pre-dexed 원격 종속성에 대한 캐싱을 비활성화합니다. (이들은 각 속성의 기본 설정이므로, 설정을 선언하지 않은 경우에는 pre-dexed 원격 종속성이 활성 상태로 유지됩니다.)

android {
  defaultConfig {
    // If you do enable multidex, you must also set
    // minSdkVersion to 21 or higher.
    multiDexEnabled false
  }
  buildTypes {
    <build-type> {
      minifyEnabled false
    }
  }
  dexOptions {
    preDexLibraries true
  }
  ...
}
...

참고: 프로젝트에서 Android 플러그인 버전 2.2.2 또는 2.2.3을 사용하는 경우에는 시험용 버전의 빌드 캐시 기능을 사용하게 됩니다. 최신 버전의 Android 플러그인을 사용하려면 프로젝트를 업데이트해야 합니다.

빌드를 더 빠르게 만드는 다른 방법에 대해 알아보려면 빌드 속도 최적화를 참조하세요.

빌드 캐시의 위치 변경

기본적으로, Android 플러그인은 캐시를 <user-home>/.android/build-cache/에 저장합니다. (높은 우선 순위부터 나열된) 다음 경로 변수 중 하나를 구성하면 Android Studio가 그 대신 <path-variable>/.android/build-cache/를 사용합니다.

  • ANDROID_SDK_HOME
  • user.home
  • HOME

Android 플러그인은 하나의 기본 위치를 빌드 캐시에 사용하므로, Android 플러그인 2.3.0 이상을 사용하는 (또한 빌드 캐시가 비활성화되지 않은) 모든 프로젝트 간에 캐시된 파일을 공유할 수 있습니다. 예를 들어, 한 프로젝트에서 pre-dexed 종속성을 빌드하고 캐시한 후, 이 종속성을 사용하는 다른 프로젝트에서 공유 빌드 캐시로부터 종속성을 복사하여 다시 pre-dexing하는 과정을 건너뛸 수 있습니다.

프로젝트가 자체 캐시를 생성하도록 하려면 해당 프로젝트의 gradle.properties 파일에 고유 캐시 위치를 다음과 같이 지정할 수 있습니다.

// You can specify either an absolute path or a path relative
// to the gradle.properties file.
android.buildCacheDir=<path-to-directory>

파일 편집이 끝나면 Sync Project를 클릭하여 새 빌드 캐시 디렉토리를 생성합니다.

참고: <project-root>/build/ 또는 <project-root>/<module-root>/build/ 디렉토리 내에 있는 빌드 캐시에는 디렉토리 지정을 피하세요. 이들 디렉토리는 Gradle이 clean 작업을 실행할 때마다 삭제됩니다.

다른 특정 프로젝트에서만 캐시를 공유하려면, 해당 프로젝트의 gradle.properties 파일에 동일한 빌드 캐시 디렉토리를 지정하세요.

빌드 캐시 삭제

프로젝트의 build/ 디렉토리를 삭제하는 Android 플러그인의 clean 작업과 마찬가지로, 프로젝트의 빌드 캐시를 삭제하기 위해 cleanBuildCache 작업을 실행할 수 있습니다. 프로젝트가 빌드 캐시에 비기본 디렉토리를 지정하는 경우, 이 프로젝트에서 작업을 실행하면 해당 캐시만 삭제되며, 기본 위치의 공유된 캐시는 삭제되지 않습니다. 작업을 실행하려면 View > Tool Windows > Terminal을 메뉴 모음에서 선택하고 다음 명령 중 하나를 사용합니다.

  • Windows의 경우:
    gradlew cleanBuildCache
  • Mac 또는 Linux의 경우:
    ./gradlew cleanBuildCache

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

빌드 캐시 비활성화

빌드 캐시는 클린 빌드의 속도를 높여주므로 이 기능을 비활성화하는 것은 권장하지 않습니다. 그래도 프로젝트의 빌드 캐시를 비활성화하려면, 다음을 gradle.properties 파일에 추가합니다.

// To re-enable the build cache, either delete the following
// line or set the property to 'true'.
android.enableBuildCache=false

파일 편집이 끝나면 Sync Project를 클릭하여 변경 사항을 적용합니다.

참고: 빌드 캐시를 비활성화면 Android 플러그인은 android.buildCacheDir 속성을 무시하며 cleanBuildCache 작업을 더 이상 사용할 수 없습니다. 또한 빌드 캐시를 비활성화하더라도 캐시 디렉토리가 자동으로 삭제되지는 않습니다. 이렇게 하면 빌드 캐시를 다시 활성화하려는 경우 캐시된 파일을 그대로 유지할 수 있습니다.