Android 스튜디오 프로젝트에 두 개의 build.gradle 파일이있는 이유는 무엇입니까?


102

Eclipse 프로젝트를 Android Studio로 가져온 후 두 build.gradle파일이 표시됩니다.

1 - <PROJECT_ROOT>\build.gradle
2 - <PROJECT_ROOT>\app\build.gradle

첫 번째 버전은 더 짧고 두 번째 버전에는에 대한 정의가 포함되어 있습니다 compileSdkVersion.

두 개의 개별 파일을 갖는 목적은 무엇입니까? 별도의 빌드 작업이 있습니까?


답변:


72

<PROJECT_ROOT>\app\build.gradle앱 모듈 에만 해당됩니다 .

<PROJECT_ROOT>\build.gradleA는 "최고 수준의 빌드 파일" 모든 하위 프로젝트 / 모듈로 구성 옵션의 일반적인를 추가 할 수 있습니다.

프로젝트에서 다른 모듈을 사용하는 경우 로컬 라이브러리로 다른 build.gradle파일 이 생깁니다 . <PROJECT_ROOT>\module\build.gradle

예를 들어 최상위 파일에서 다음과 같은 공통 속성을 지정할 수 있습니다.

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

ext {
    compileSdkVersion = 23
    buildToolsVersion = "23.0.1"
}

당신의 app\build.gradle

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
}

+1 감사합니다. 곧 답변을 수락합니다. build.gradle빌드를 트리거 하려면 파일의 존재가 필수인가요? 또한 최상위 빌드 파일은 하위 수준 파일을 호출합니까? (그 증거는 없지만.)
Sabuncu

gradle로 프로젝트를 빌드하려는 경우 build.gradle 파일은 필수입니다. Android Studio에는 gradle이 필요하지 않지만 적극 권장됩니다. 최상위 파일은 하위 파일을 호출하지 않습니다. gradle은 작업과 함께 작동하지만 주석으로 설명하기가 어렵습니다.
Gabriele Mariotti 2014

Gabriele에게 감사합니다. 이것이 제가 시작하는 데 도움이 될 것입니다.
Sabuncu 2014

1
특히 rootProject.ext.compileSdkVersion구조는 매우 유익합니다.
Sabuncu 2014

2
ext {...}를 사용하여 우회하는 것이 중요합니까? 아니면 Android 플러그인과 compileSdkVersion을 최상위 빌드 파일에 직접 적용해야합니까?
PhilLab

17

공식 문서에서 :

Android 스튜디오 프로젝트에는 프로젝트의 모든 애플리케이션 모듈에 공통적 인 구성 옵션을 추가 할 수있는 최상위 프로젝트 Gradle 빌드 파일이 포함되어 있습니다. 각 애플리케이션 모듈에는 해당 build.gradle모듈에 특정한 빌드 설정에 대한 자체 파일 도 있습니다 .

여기에 이미지 설명 입력

프로젝트 빌드 파일

<PROJECT_ROOT>\build.gradle또는 프로젝트 빌드 파일전체 프로젝트 용 이므로 글로벌 프로젝트 구성에 사용됩니다. 일반적인 프로젝트 빌드 파일 에는 다음이 포함됩니다.

  • 다음을 정의하는 buildscript :
    • 저장소 및
    • 종속성
  • Gradle 플러그인 버전

기본적으로 프로젝트 수준 Gradle 파일은 buildscript 를 사용하여 Gradle 저장소종속성 을 정의합니다 . 이를 통해 서로 다른 프로젝트에서 서로 다른 Gradle 버전을 사용할 수 있습니다. 지원되는 저장소에는 JCenter, Maven Central 또는 Ivy가 포함됩니다. 이 예제는 빌드 스크립트가 JCenter 저장소와 Gradle 버전 1.0.1 용 Android 플러그인이 포함 된 클래스 경로 종속성 아티팩트를 사용함을 선언합니다.


모듈 빌드 파일

<PROJECT_ROOT>\app\build.gradle또는 모듈 빌드 파일특정 모듈 용 이므로 특정 모듈 수준 구성에 사용됩니다. 모듈 빌드 파일은 다음을 포함합니다

  • 안드로이드 설정
    • compileSdkVersion
    • buildToolsVersion
  • defaultConfig 및 productFlavors
    • applicationId, minSdkVersion, targetSdkVersion 및 테스트 정보와 같은 매니페스트 속성
  • buildTypes
    • 디버깅 가능, ProGuard 활성화, 디버그 서명, 버전 이름 접미사 및 테스트 정보와 같은 빌드 속성
  • 종속성

여기에서 공식 문서를 읽을 수 있습니다.

프로젝트 및 모듈 빌드 설정

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.