본문 바로가기
Android/Tip

[안드로이드] implementation 는 왜 사용 하는 걸까?

by Jay Son 아기 냥이 해린 짱💖 2021. 9. 3.

implementation 사용 목적

외부 라이드러리는 내 프로젝트에서 사용하기 위해 선언

apply plugin: 'com.android.application'

android { ... }

dependencies {
    // Dependency on a local library module
    implementation project(":mylibrary")

    // Dependency on local binaries
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // Dependency on a remote binary
    implementation 'com.example.android:app-magic:12.3'
}

 

4.3 이상 버전에서 사용 할 경우 아래와 같이 compile is deprecated; replace with implementation 표시됨

 

왜 complie 옵션을 지원 중단 되었을까?

complie -> implementation 변경 할 경우 apk 빌드 시간을 크게 개선 할 수 있음.

Gradle이 컴파일 클래스 경로에 종속 항목을 추가하고 빌드 출력에 종속 항목을 패키징합니다. 그러나 모듈에서 implementation 종속 항목을 구성하면 모듈이 컴파일 시간에 종속 항목을 다른 모듈에 누출하기를 바라지 않는다는 것을 Gradle에 알려주는 것입니다. 즉 종속 항목은 런타임에만 다른 모듈에서 이용할 수 있습니다. api 또는 compile(지원 중단됨) 대신 이 종속 항목 구성을 사용하면 빌드 시스템에서 다시 컴파일해야 하는 모듈 수가 줄어들기 때문에 빌드 시간이 크게 개선될 수 있습니다. 예를 들어 implementation 종속 항목이 API를 변경하면 Gradle은 이 종속 항목과 이에 직접적으로 종속된 모듈만 다시 컴파일합니다. 대부분의 앱과 테스트 모듈은 이 구성을 사용해야 합니다.

build.gradle dependencies compile 옵션은 아래와 같이 gradle 버전 4.2까지 지원되고 이후 버전에서는 지원 중단됨.

 

지원 중단된 구성(AGP 1.0~4.2에서 사용 가능)

apk Gradle은 런타임 동안 사용하기 위한 목적으로 빌드 출력에만 종속 항목을 추가합니다. 즉 컴파일 클래스 경로에는 추가되지 않습니다.
compile Gradle은 컴파일 클래스 경로와 빌드 출력에 종속 항목을 추가합니다. 종속 항목을 다른 모듈로 내보냅니다.
provided Gradle은 컴파일 클래스 경로에만 종속 항목을 추가합니다(즉 빌드 출력에는 추가되지 않음).

 

자료 참고 : https://developer.android.com/studio/build/dependencies?hl=ko 

 

빌드 종속 항목 추가  |  Android 개발자  |  Android Developers

Android 스튜디오에서 Gradle 빌드 시스템을 이용하여 빌드 종속성을 추가하는 방법에 관해 알아보세요.

developer.android.com

 

반응형