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.