728x90
반응형
안드로이드 Gradle에 Dependency를 추가하다보면 버전 정보가 뒤섞여 눈에 잘 들어오지 않는다.
이 때 implementation과 버전 정보에 변수를 사용하면 편리하다.
다음은 구글 architecure-sample에 있는 App 레벨 Gradle의 일부 코드이다.
같은 성격을 가지는 dependency끼리 주석으로 행구분이 되어있다.
이렇게 분리를 해주면 관리 하는 측면에서도 한눈에 파악이 가능하다.
dependencies {
// App dependencies
implementation "androidx.appcompat:appcompat:$appCompatVersion"
implementation "androidx.cardview:cardview:$cardVersion"
implementation "com.google.android.material:material:$materialVersion"
implementation "androidx.recyclerview:recyclerview:$recyclerViewVersion"
implementation "androidx.annotation:annotation:$androidXAnnotations"
implementation "androidx.legacy:legacy-support-v4:$androidXLegacySupport"
implementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
implementation "com.google.guava:guava:$guavaVersion"
implementation "androidx.room:room-runtime:$roomVersion"
annotationProcessor "androidx.room:room-compiler:$roomVersion"
// Architecture Components
implementation "androidx.room:room-runtime:$roomVersion"
annotationProcessor "androidx.room:room-compiler:$roomVersion"
implementation "androidx.lifecycle:lifecycle-extensions:$archLifecycleVersion"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$archLifecycleVersion"
// Dependencies for local unit tests
testImplementation "junit:junit:$junitVersion"
testImplementation "org.mockito:mockito-all:$mockitoVersion"
testImplementation "org.hamcrest:hamcrest-all:$hamcrestVersion"
testImplementation "android.arch.core:core-testing:$archTestingVersion"
// Dependencies for Android unit tests
androidTestImplementation "junit:junit:$junitVersion"
androidTestImplementation "org.mockito:mockito-core:$mockitoVersion"
androidTestImplementation "com.google.dexmaker:dexmaker:$dexMaker"
androidTestImplementation "com.google.dexmaker:dexmaker-mockito:$dexMaker"
// Android Testing Support Library - Instrumented testing
androidTestImplementation "androidx.test:runner:$androidXTestVersion"
androidTestImplementation "androidx.test:rules:$androidXTestVersion"
androidTestImplementation "androidx.room:room-testing:$roomVersion"
androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"
androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion"
androidTestImplementation "androidx.test.espresso.idling:idling-concurrent:$espressoVersion"
implementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
// Resolve conflicts between main and test APK:
androidTestImplementation "androidx.annotation:annotation:$androidXAnnotations"
androidTestImplementation "androidx.legacy:legacy-support-v4:$androidXLegacySupport"
androidTestImplementation "androidx.recyclerview:recyclerview:$recyclerViewVersion"
androidTestImplementation "androidx.appcompat:appcompat:$appCompatVersion"
androidTestImplementation "com.google.android.material:material:$materialVersion"
}
위의 코드를 자세히 보면 dependency 뒤쪽에 "$변수 이름"으로 표시되어있는데, 이는 Project 레벨 Gradle에서 미리 선언한 버전 값이다.
Project Gradle은 다음과 같이 사용되어지는 변수를 선언했다.
// Define versions in a single place
ext {
// Sdk and tools
// Support library and architecture components support minSdk 14 and above.
minSdkVersion = 14
targetSdkVersion = 28
compileSdkVersion = 28
// App dependencies
androidXVersion = '1.0.0'
androidXTestVersion = '1.1.1'
androidXAnnotations = '1.0.1'
androidXLegacySupport = '1.0.0'
materialVersion = '1.0.0'
cardVersion = '1.0.0'
recyclerViewVersion = '1.0.0'
appCompatVersion = '1.0.2'
guavaVersion = '27.0.1-android'
junitVersion = '4.12'
mockitoVersion = '1.10.19'
dexMaker = '1.2'
hamcrestVersion = '1.3'
runnerVersion = '1.0.1'
rulesVersion = '1.0.1'
espressoVersion = '3.1.1'
roomVersion = '2.0.0'
archLifecycleVersion = '2.0.0'
archTestingVersion = '1.1.1'
}
이처럼 보다 깔끔하게 관리하고싶다면 변수를 만들어 버전 넘버를 사용해보자.
반응형
'개발' 카테고리의 다른 글
안드로이드 에뮬레이터에서 로컬호스트 주소 접근 방법 (0) | 2019.07.01 |
---|---|
Global로 설치된 노드 모듈이 실행되지 않는 경우 (0) | 2019.07.01 |
Netlify로 정적 웹 클라이언트를 배포해보자! (4) | 2019.04.07 |
코드 정적 분석을 위한 소나 클라우드(Sonar Cloud) 사용법 (0) | 2019.03.30 |
자바스크립트 호출 스택(Call Stack) 동작 예제 (3) | 2019.01.07 |
댓글