build.gradle (Project)와 build.gradle (Module)의 차이점


98

내 프로젝트에 Android 비동기 Http 클라이언트의 종속성을 추가하려고합니다. 따라서 프로젝트에는 두 개의 build.gradle 파일이 있습니다.

여기에 이미지 설명 입력

내 이해에 따라 다른 종류의 종속성이 있습니다.

  1. build.gradle (Project : My-app)의 루트 레벨에 정의 된 것
  2. build.gradle (Project : My-app)의 buildscript 안에있는 하나
  3. 다른 하나는 build.gradle (Modules : app)

이 질문 은 buildScript의 종속성에 대한 리포지토리에 관한 것이며 처음 두 유형에 대해 약간 설명합니다.

또한 build.gradle (Project : My-app)은 말합니다.

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

그래서 Android Asynchronous Http Client의 종속성 코드가 build.gradle (Module : app)에 추가되어야한다고 생각합니다.

누군가가 더 나은 이해를 위해이 모든 것을 명확하게 보여줄 수 있다면 좋을 것입니다.


3
외부 라이브러리 인 경우, 예를 탭하여 녹색 십자 표시가있는 곳에 추가 build.gradle(Modules:app)하거나 자동으로 라이브러리를 추가 File -> Project Structure -> Modules -> (Choose project you want to add library) -> Dependencies합니다Module Dependency
— hrskrs

build.gradle (Module : app)에 추가하면 Failed to find: com.loopj.android:android-async-http:1.4.5 직접 다운로드 할 수 없다는 오류가 표시 되며 프록시도 설정했습니다. jar 파일을 다운로드하고 수동으로 시도했지만 .. File Repository올바른 방법입니다.
— Anil Bhaskar 2015

간단하게 사용하려면 Project Structure로 이동 Modules하여 프로젝트를 선택하십시오. 거기에 green cross sign. 클릭하면 New Module창이 열립니다. 라이브러리 가져 오기를 선택 .jar합니다 import .JAR or .AAR package. 파일 이 있으면 아래에서 . 그렇지 않으면 jar를 libs폴더에 복사하고 Module:app다음 종속성을 추가 하십시오 .dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile files('libs/your_jar_file.jar') }
— hrskrs

이것은 좋은 읽기입니다 developer.android.com/studio/build/index.html
— onmyway133

답변:


49

build.gradle(Project:My-app)

모든 하위 프로젝트 / 모듈에 공통적 인 구성 옵션을 추가 할 수있는 최상위 빌드 파일입니다.

각 프로젝트에는top-level gradle file . 그것은 일반적 common configs으로 모든 modules. 여기에 포함 된 내용이 무엇이든 top-level gradle모두에게 영향을 미칩니다 modules.

전의:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0-alpha3'

        //Maven plugin
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(Module:app)

특정 모듈의 빌드 파일 (종속성, 서명 구성, 빌드 유형, 특징 등을 추가하는 위치)

모두 modules특정 gradle파일이 있습니다. 이 gradle파일에 포함 된 내용은 포함 된에 영향을줍니다 module.

전의:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.hrskrs.gesturefun"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':gesture-fun')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.jakewharton:butterknife:7.0.1'
}

43

Android Studio는 기본적으로 두 build.gradle파일을 서로 바로 옆에 표시하기 때문에 약간 혼란 스럽습니다 (Android보기를 사용할 때).

여기에 이미지 설명 입력

프로젝트보기로 전환하면 실제 구조와 다른 build.gradle파일이있는 위치를 볼 수 있습니다.

여기에 이미지 설명 입력

build.gradle(프로젝트 :하여 MyApplication) 파일은 프로젝트의 루트 폴더에있는 및 구성 설정은 프로젝트의 모든 모듈에 적용됩니다. 모듈은 더 큰 프로젝트에서 분리 된 부분입니다. 다중 모듈 프로젝트에서 이러한 모듈은 자체 작업이 있지만 함께 작동하여 전체 프로젝트를 구성합니다. 대부분의 Android 프로젝트에는 앱 모듈이라는 하나의 모듈 만 있습니다.

여기에있는 build.gradle(모듈 : 앱) 파일은 app폴더에 있습니다. 빌드 설정은 앱 모듈에만 적용됩니다. 다른 모듈이있는 경우 해당 모듈 build.gradle도 자체 파일을 갖게 됩니다. 예를 들어 , 라이브러리 모듈, 데모 앱 모듈 및 테스트에 사용할 다른 앱 모듈의 세 가지 모듈로 라이브러리 프로젝트를 만들었습니다. 그들 각각은 build.gradle내가 조정할 수있는 자체 파일을 가지고 있습니다.

여기에 이미지 설명 입력

기본 프로젝트에서 편집해야하는 거의 모든 것이 앱 모듈의 build.gradle파일에 있습니다. 다음과 같이 기억할 수 있습니다.

앱을 만들고 있으므로 build.gradle(Module : app ) 파일로 이동합니다.

추가 읽기


1

두 gradle파일의 관계에 대해 hrskrs 는 매우 명확한 설명을했습니다 , 나는 그것에 대해 약간의 보충을 할 것입니다.

프로젝트에 하나의 모듈 (예 : app ) 만있는 경우 top build.gradle (Project : My-app) 의 장점은 명확하지 않습니다. 모듈 에 대한 build.gradle (Module : app)의 모든 내용을 구성 할 수 있고 다음 날 업그레이드시 하나의 파일 만 수정할 수 있기 때문 입니다。

하지만 프로젝트에 5 개의 모듈 이 있고 상위 build.gradle (Project : My-app)을 사용하지 않으면 동일한 종속성 A 가있는 경우 을 다음 날 5 개의 파일을 유지해야합니다.

그건 그렇고, build.gradle (Module : app) 은 build.gradle (Project : My-app)을 덮어 쓸 수 있습니다 .

이 디자인은 APP의 유지 보수성을 향상시킬 수 있습니다.

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