dependency 유형 알아보기

2024. 5. 12. 22:19·Android
목차
  1. Dependency(종속 항목)란?
  2. implementation
  3. - testImplementation
  4. - androidTestImplementation
  5. - debugImplementation
  6. - releaseImplementation
  7. api
  8. compileOnly
  9. runtimeOnly
  10. Reference

Dependency(종속 항목)란?

안드로이드 스튜디오에서 Gradle 빌드 시스템을 사용하면 외부 바이너리나 다른 라이브러리 모듈을 빌드에 종속되는 항목으로 추가할 수 있다. dependencies 블록에서 여러 가지 종속 항목 구성을 사용해 라이브러리 또는 플러그인을 종속 항목으로 선언해 사용하게 되는데 이때 사용하는 구성의 이름을 통해 어떤 범위에서 어떤 시기에 사용되는지 유추할 수 있다. 오늘은 각 구성의 특성에 대해서 알아본다.

 

implementation

가장 일반적으로 사용되는 유형으로, 현재 모듈 내에서만 사용되며 외부 모듈로 노출되지 않는다. 따라서 api와는 달리 빌드 시스템에서 다시 컴파일해야 하는 모듈 수가 줄어들어 빌드 속도가 크게 개선될 수 있다. 따라서 대부분의 앱과 테스트 모듈은 이 구성을 사용하게 된다.

implementation("androidx.core:core-ktx:1.13.1")

 

- testImplementation

이름에서 알 수 있듯이 테스트 소스 세트에서만 사용되는 라이브러리를 선언할 때 사용한다. 예를 들어 로컬 테스트 라이브러리, JUnit 같은 테스트 프레임워크, 목킹 라이브러리 등에 사용된다. 

testImplementation("junit:junit:4.13.2")
testImplementation("org.mockito:mockito-core:$mockitoVersion")

 

- androidTestImplementation

안드로이드 테스트 환경 전반에서 사용되는 dependency로 계측 테스트인 UI 테스트, Espresso, UI Automator 등에 사용된다.

androidTestImplementation("androidx.test:core-ktx:1.5.0")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")

 

- debugImplementation

디버그 빌드에만 적용되며, 디버깅 도구 및 라이브러리, 분석 도구, 검증 도구 등에 사용된다.

debugImplementation("androidx.compose.ui:ui-tooling:1.6.8")
debugImplementation("androidx.fragment:fragment-testing-manifest:1.8.2")

 

- releaseImplementation

릴리즈 빌드에만 적용되며, 성능 최적화 라이브러리, 보안 강화 도구 등의 라이브러리 선언에 사용된다.

releaseImplementation("com.google.firebase:firebase-analytics:jar:22.0.2")

 

api

implementation과 유사하게 사용되지만, 주요 차이점은 api를 사용하여 추가된 라이브러리는 모듈의 API를 통해 다른 모듈에 노출되고 해당 구성이 외부 API를 변경하면 연결된 모든 모듈이 새롭게 컴파일하기 때문에 빌드 속도가 크게 증가할 수 있어 외부 모듈에 노출해야하는 api가 아니라면 implementation을 사용해야 한다.

api("com.google.dagger:dagger:2.41")
api("io.reactivex.rxjava2:rxjava:2.2.21")
api("com.squareup.retrofit2:retrofit:2.9.0")

이 외에도 api에 debug와 release가 붙는 등 여러 가지 유형이 있지만 대부분 여기 있는 유형의 조합으로 만들어지므로 어떤 상황에서 사용되는지 충분히 이해할 수 있을 것이다.

 

compileOnly

컴파일 시에만 사용된다는 뜻으로 컴파일 클래스 경로에만 dependency를 추가하여 빌드 출력에는 추가되지 않는다. 런타임에는 포함되지 않는(포함하지 않아도 문제없이 동작하는) 주석 프로세서나 옵셔널 API의 인터페이스 같은 라이브러리를 추가할 때 사용하면 앱의 크기를 줄이는데 도움이 된다.

compileOnly("com.google.dagger:dagger:2.51.1")

 

runtimeOnly

compileOnly와는 반대로 런타임에서만 사용할 라이브러리를 추가할 때 사용하며 빌드 출력에만 추가되며 컴파일 클래스 경로에는 추가되지 않는다. 안드로이드에서는 잘 사용하지 않는 구성이며 서버 애플리케이션에서 주로 사용하여 데이터베이스 드라이버 등에 사용한다.

runtimeOnly("com.h2database:h2")
runtimeOnly("mysql:mysql-connector-java")

 

Reference

https://developer.android.com/build/dependencies?hl=ko

 

빌드 종속 항목 추가  |  Android Studio  |  Android Developers

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

developer.android.com

https://developer.android.com/training/testing/local-tests?hl=ko

 

로컬 단위 테스트 빌드  |  Android 개발자  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 로컬 단위 테스트 빌드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 로컬 테스트는 Android 기기나 에

developer.android.com

https://developer.android.com/training/testing/instrumented-tests?hl=ko

 

계측 테스트 빌드  |  Android 개발자  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 계측 테스트 빌드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 계측 테스트는 실제 기기 또는 에뮬

developer.android.com

  1. Dependency(종속 항목)란?
  2. implementation
  3. - testImplementation
  4. - androidTestImplementation
  5. - debugImplementation
  6. - releaseImplementation
  7. api
  8. compileOnly
  9. runtimeOnly
  10. Reference
'Android' 카테고리의 다른 글
  • local.properties를 활용해 키 값 안전하게 관리하기
  • 버전 충돌로 인한 오류, 안정화 버전으로 해결하는 법
  • 안드로이드 스튜디오 한글화(한국어 언어 팩) 방법
브애애앳
브애애앳
  • 브애애앳
    디벨로퍼즐
    브애애앳
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • Android (4)
      • Android App (1)
      • Figma (1)
      • Jetpack (2)
      • Jetpack Compose (16)
      • Kotlin (4)
      • Tistory (1)
  • 링크

    • 카카오톡 문의
  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
브애애앳
dependency 유형 알아보기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.