Android 앱 gradle 정보

AndroidStudio를 사용하여 Android 앱을 개발할 때 자동으로 생성되는 gradle에 대해.
조금 신경이 쓰인 적이 있었기 때문에 메모.

신경이 쓰인 것



buil.gradle이라는 파일이 세 개 있습니다.

build.gradle (Project : 프로젝트 이름)
build.gradle(Module:app)
build.gradle(Module:mylibrary)

이름은 같지만 내용은 모두 다르다.
각 buld.gradle의 내용과 역할에 대해 정리해 보자.

build.gradle (Project : 프로젝트 이름)


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

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'


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

allprojects {
    repositories {
        google()
        jcenter()
    }
}

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

코멘트를 보면, 이 gradle가 톱 레벨(프로젝트 파일의 바로 아래?)에 있는 것 같다.
확실히 이것과 같은 내용의 gradle 파일을 찾아 보면 프로젝트 파일 바로 아래에 있었다.

게다가 dependencies내의 코멘트를 보면, 이 gradle 파일에는 의존관계를 쓰지 말아야 한다.
각 모듈마다 gradle 파일이 있으므로, 그곳에 기술 해주세요.
라이브러리를 사용하고 싶은 등으로 편집할 때의 gradle 파일이 아닌 것 같다.

build.gradle(Module.app)


apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.sampleapplication.sample.apitest"
        minSdkVersion 27
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation project(':mylibrary')
}

여기에는 코멘트 없음.
그러나 첫 번째 gradle과는 내용이 완전히 다릅니다.
dependencies의 내용과, 파일의 위치로부터, 외부의 라이브러리를 사용하는 경우의 의존관계는 여기에 쓰면 좋을 것 같다.
덧붙여서 파일의 위치는 app의 바로 아래.


build.gradle(Module:mylibrary)


apply plugin: 'com.android.library'

android {
    compileSdkVersion 28



    defaultConfig {
        minSdkVersion 27
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

이쪽에도 특히 코멘트는 없다.
그리고 아마 이것은 프로젝트 작성 시점이 아니었을 것입니다.
라이브러리를 추가했기 때문에 이것도 추가되었다고 생각한다.

좋은 웹페이지 즐겨찾기